ウェブブラウザ開発ブログ
 
ウェブブラウザ開発ブログ

IEツールバー

Anciaは、ExplorerBarPlusをどうしても使用したかったので、初回v0.0.1の時点でIEツールバー・エクスプローラバーをサポートしています。サポートといっても、IEでしか動かないものなどあるため、全てのツールバーのサポートは無理です。 AnciaでのIEツールバーの仕様は、Internet Explorer同様、1つのタブにつき、1ツールバーインスタンスです。2つタブがあるとき、ツールバーも2つ存在します。タブを切り替えるときに、IEツールバーの表示も切り替えています。 IEツールバー自体、1つのIWebbrowserへの動作のため、複数タブで1つのIEツールバーを共有し動作させる実装は選択しませんでした。複数タブ対1つのIEツールバーは、仕様に従わず無理に動かすことは可能だと思いますが、無理に動かしてもしょうがないですし、無理に動かすための実装時間がもったいなく思えました。 Ancia初期の開発段階では、全タブが閉じた状態での起動でした。ですが、IEツールバーが1つのIWebBrowserが必要なので、IEツールバーをサポートしたことで、全タブが閉じた状態での起動仕様は捨てました。全タブが閉じた状態での起動が自身は好きですが、IEツールバーのサポートのほうが、上だったので、、仕方ないです。
この投稿を読む

localhome機能

Anciaの0.3.0のリリースで、ローカルホーム機能を追加しました。これは、about:localhomeにアクセスしたとき、resource配下のlocalhome.htmlの内容を表示するものです。resource/customizeにlocalhome.htmlがある場合は、そちらを優先に表示します。 about:localhomeのURLは特殊で、ローカルロックダウン・script無効でもスクリプトが実行できます。また、localhomeのときだけ、externalからアプリのさまざまなオブジェクト(IEのホーム一覧や、今日表示したページ一覧など)が参照できます。まだlocalhomeのデザインが適当なので、そのうち直します。localhomeの表示には、タブスナップショットの一覧も含める予定です。 localhomeは1日丸々使ったので、さすがに疲れました。年末も精神的にかなり辛いことがあったので、今日は、、ゆっくりしよう
この投稿を読む

トップページ

で、ブログエントリの最新3件まで表示しているが、日本語のタイトルで文字化けが発生。domxml_open_fileは、どうやらUTF-8として扱ってしまうらしく、mb_convert_encodingでUTF-8からEUC-JPにしたので、このタイトルが文字化けしていないはず。 ブログのatom.xml読み込みは、非同期でも可能ですが、非同期にしてさらにリクエストを増やすより、リクエストが来ているのだから、たかが20Kのファイル、サーバで読み取った方がいいんじゃないかと、素人考えで思いました。
この投稿を読む

dyn menu

Anciaは、ResHackerでみると分かりますが、メニューリソースを持っていません。メニューは全てファイルで持ち、メニューファイルには、動的メニューアイテム(dynamic menu)を定義できます。実装済み動的メニューは、placeholderのprefixではじまる placeholder.ietoolbar 〜 Internet Explorerツールバー placeholder.ievertbar 〜 Internet Explorerエクスプローラバー placeholder.up 〜 上へ移動 placeholder.back 〜 トラベルログの戻る placeholder.forward 〜 トラベルログの進む placeholder.travellog 〜 トラベルログ全て placeholder.closed 〜 最近閉じたタブ placeholder.new.closed 〜 最近閉じたタブ(新しいタブで開く) placeholder.home 〜 Internet ExplorerのホームURL placeholder.new.home 〜 Internet ExplorerのホームURL(新しいタブで開く) placeholder.toolbar 〜 アドレスバー、検索バーなど表示・非表示 placeholder.searchengine 〜 検索エンジン placeholder.encoding 〜 エンコーディング placeholder.tab 〜 タブ一覧(次回更新に含まれます) です。 ツールバーのメニューファイルmenu_toolbar.jsonを {“menu”:[ ← 次回更新でrootからmenuへ変更されます {“popup”:[   {“cmd”:“placeholder.toolbar”},   null,   {“txt”:“ハイライトバー”,“cmd”:“show.hilitebar”},   {“txt”:“インラインサーチ(&I)“,“cmd”:“isearch”},   {“txt”:“ステータスバー(&B)“,“cmd”:“statusbar”},   null,   {“txt”:“エクスプローラバー”,“popup”:[     {“cmd”:“placeholder.ievertbar”}]},   null,   {“cmd”:“placeholder.ietoolbar”},   null,   {“txt”:“ツールバー固定する(&B)“, “cmd”:“locktoolbar”}]} ]} とした場合、ツールバーで右クリックすると、placeholder.toolbar、ietoolbarが動的に展開され、上の画像のメニューが表示されます。placeholderでの展開がないときは「なし」になります。nullはセパレータです。 仕様として、下のように
この投稿を読む

creating ancia

Anciaの開発に当たって、実装をあきらめた機能があります。それは、タブごとにスレッドとする機能です。 タブを複数作成すると、1つのUIスレッドで複数tridentエンジンが動作するため、1タブが重いページを読み込むと他のタブも固まってしまいます。新しいタブブラウザを開発するからには、タブごとにスレッドとすることが実装目的の一つでした。 しかし残念ながら、タブごとにスレッドで動作させることは可能でしたが、どうしても解決できない問題があり、あきらめてしまいました。スレッドで生成したtridentエンジンで、どうにもスクロールがスレッドではないときに比べ、もたついてしまうのです。タブごとのスレッドのTheWorldで、http://www.yahoo.co.jp/を開くと、ホイール上下でのスクロールがIEに比べスムーズではないことが分かります。 1UIスレッド・複数タブで実装が進んでしまった今では、タブごとのスレッドやプロセス対応は、無理そうです。
この投稿を読む

AutoTextLink

オートテキストリンクとは、テキストのURLを自動的にリンクにする機能です。Firefoxのアドオン、テキストリンクのようなものです。このテキスト http://www.egrath.net/?AnciaがAnciaで開くとリンクになります。オートテキストリンクされたことが区別できるよう、作成されたリンクにはアイコンを表示します。アイコンが表示されなければ、ページのリンクなのか、作成されたリンクなのか区別できません。 下のURLらしいテキストでもリンクを作成します。 ttps://addons.mozilla.org/ja/firefox/addon/1939 tps://addons.mozilla.org/ja/firefox/addon/1939 ps://addons.mozilla.org/ja/firefox/addon/1939 ttp://www.egrath.net/?Ancia tp://www.egrath.net/?Ancia 全角 http://www.egrath.net/?Ancia 欠点として、たとえば掲示板で怪しいURLのテキストをリンクとしてしまうため、クリックすると確認無しに開けてしまうことです。これは、次回更新でオートテキストリンクを開くときは、確認ダイログを表示する対応を入れます。 オートテキストリンクでもドロップアクションが動作するため、 怪しいURLは、aguse.jpへドロップ aguse.jpの調査結果で、大丈夫なら、調査結果のページから怪しいURLをオープン(オートテキストリンクが動作し、怪しいURLがリンクになってる) と、マウスの操作だけで出来ます。
この投稿を読む

DropAction

Anciaのドロップアクションとは、簡単にいうとドロップターゲットの表示です。リンクやテキストをドラッグすると、ボタンが表示されるので、直感的に行ないたいボタンへドロップします。 設定ファイルは、resourceのdrop_link.json(リンクの場合)、drop_text.json(テキストの場合)です。ボタンは、設定ファイルでdropdownがあると階層構造になります。アプリでは、階層構造の深さに制限は設けていません。dropdownとしてもdropdownボタンにドロップ可能です。 ボタンは、 スクリプト(script) 検索(search) が登録できます。アクションをスクリプトで書かなければならないことが面倒ですが、アプリでアクションを実装するときりがないので、その様にしました。逆にスクリプトが実行できるので、ActiveXObject等でインスタンスを作成し、ダウンローダを起動するなども簡単に出来ます。 ドロップアクションは、単なるOleDragDropのイベント契機に表示しているので、他のアプリからのドラッグなどでも表示できます。たとえば、こんなことが可能です。 他のブラウザからドラッグされたリンクを新しいタブで開く 他のブラウザからドラッグされたリンクをクリップボードにコピー Wordや秀丸からドロップされたテキストでGoogle検索し、ハイライト Anciaのリンクバーからドラッグされたボタンをバッググラウンドタブで開く ・・・など、スクリプトなのでアクションは自由です。
この投稿を読む

Ancia 0.2.9

まだ開発途中ですがAnciaを更新しました。アドレスバーと検索バーのスキン対応、ユーザエージョント変更など。他に、スクリプトの汎用性向上の仕様変更も入れる予定でしたが、時間がありませんでした。 スクリプトの汎用性向上とは、 アプリはアドレスバーのとき、DataObjectのTextにURL、UniformResourceLocatorにURLを設定し、スクリプトを実行 アプリは検索バーのとき、DataObjectのTextに検索キーワード、URLに検索クエリURLを設定し、スクリプトを実行 スクリプトのコピー.jsは、実行元によらず、DataObjectのTextをクリップボードにコピーする処理を書けばよい というものです。この仕様とすれば、ドロップアクション用のスクリプトを別ファイルに書く必要がなくなくなり、DataObjectを扱うスクリプトだけを書けばよい、となります。 Anciaについては、なにも書いていないので、備忘録としてもこれから少しずつでも書いていこうと思います。プロセスが残ったり、ドロップアクションを表示すると落ちることがあったり、まだまだです。。
この投稿を読む
ページ上部に戻る