MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

about:blankの検知方法
https://forums.mozillazine.jp/viewtopic.php?f=26&t=7952
ページ 11

作成者:  sake [ 2008年11月14日(金) 14:48 ]
記事の件名:  about:blankの検知方法

about:blankのが表示されるのを検知したいのですがうまくいきません。
どうすれば動くようになるでしょうか?

コード:
gBrowser.addEventListener("DOMContentLoaded",blank,false);

function blank(){
 var tab = gBrowser.selectedTab;
 
 if (tab.linkedBrowser.currentURI.spec == "about:blank"  ) {
  alert("About:Blank!!");
 }
}

作成者:  Piro [ 2008年11月17日(月) 18:20 ]
記事の件名:  Re: about:blankの検知方法

実際に試してみましたが、拡張機能のコードの一部としてブラウザウィンドウの中で実行した限りでは、about:blankが表示された時にアラートが出ました。

* 何をしようとして、そうしているのでしょうか?
* sakeさんが期待している結果はどんな結果ですか?(なるべく詳しく)

といった情報があると、アドバイスも出しやすくなるかと……

もし、コードを実行する場所をそもそも間違えているということであれば、「Firefox拡張機能開発チュートリアル( http://piro.sakura.ne.jp/xul/doc/tutorial/ )」や「Firefox 3ではじめる拡張機能開発( http://gihyo.jp/dev/feature/01/firefox-addons )」などをご覧になってアドオンの作成方法をチュートリアル形式で学ばれるのが良いのではないかと思います。

作成者:  sake [ 2008年11月19日(水) 14:14 ]
記事の件名:  Re: about:blankの検知方法

>* 何をしようとして、そうしているのでしょうか?
実際には、about:blankが表示されたらホームページを表示させたいのですが、
テスト用にとアラートが出るようにしたいと思っています。


>* sakeさんが期待している結果はどんな結果ですか?(なるべく詳しく)
ロケーションバーにabout:blankを入力する、
新しいタブがabout:blankだったとき、
タブを全部閉じたときにabout:blankが表示される
これらのときにアラートが出るような結果です。

コードの実行はbrowser.xulにoverlayさせるxulファイルで実行すればできるのではないのですか?

作成者:  Piro [ 2008年11月19日(水) 17:02 ]
記事の件名:  Re: about:blankの検知方法

sake さんが書きました:
コードの実行はbrowser.xulにoverlayさせるxulファイルで実行すればできるのではないのですか?


その通りですが、もし例のコードをそのまま書いているとしたら、変数が未定義であるためにエラーになっている可能性があります。以下のようにするなどして、変数「gBrowser」をブラウザウィンドウの初期化完了後に参照するようにしてみてはどうでしょうか。

コード:
window.addEventListener('load', function() {
  window.removeEventListener('load', arguments.callee, false);

  gBrowser.addEventListener("DOMContentLoaded",onTabLoad,false);
}, false);

function onTabLoad(aEvent){
  var doc = aEvent.originalTarget.defaultView.top.document;
  var tabs = Array.slice(gBrowser.mTabContainer.childNodes);
  var loadedTab;
  for each (var tab in tabs)
  {
    if (tab.linkedBrowser.contentDocument != doc) continue;
    loadedTab = tab;
    break;
  }
 if (loadedTab.linkedBrowser.currentURI.spec == "about:blank"  ) {
  alert("About:Blank!!");
 }
}

作成者:  [ 2008年11月20日(木) 22:52 ]
記事の件名:  Re: about:blankの検知方法

sake さんが書きました:
コードの実行はbrowser.xulにoverlayさせるxulファイルで実行すればできるのではないのですか?
ですか?と聞かれても、何をどうやっているのか他の人にはすべて見えるわけではないので、そのアドオンを公開する等も含めもっと情報を出すか(何のアプリのどのバージョンで試しているのかさえ、情報がありませんよね。)、あるいは逆に先に自分で確認してほしいところです。

自分で確認するとしたら、たとえば addEventListener() した直後に alert() してみてちゃんとアラートが出るか確認するとか、
javascript.options.showInConsole を true にしていないのであれば true にして再起動してから実行してみて、エラーコンソールにエラーが出ていないか確認するとか。

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/