― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

返信する
ユーザー名:
件名:
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: ON
BBCode を無効にする
フォントサイズ:
フォントカラー
スマイリーを無効にする
URL を自動的にパースしない
ユーザエージェントを表示する
認証コード
KCaptcha by Nikita_Sp
   

トピックのレビュー - 新しいタブでページを開いたときURIを取得する方法
作成者 メッセージ
  記事の件名:  自己解決  引用付きで返信する
少し無理矢理ですが一応以下の方法でできました。

コード:
window.addEventListener("load", function() { myExtension.init(); }, false);

var myExtension={
   init: function(){
      gBrowser.addProgressListener(myListener);
      //タブ追加イベント
      gBrowser.tabContainer.addEventListener("TabOpen", myListener.tabAdded, false);
      var appcontent = document.getElementById("appcontent");   // browser
      if(appcontent) appcontent.addEventListener("DOMContentLoaded", this.onPageLoad, true);
   },
   onPageLoad : function(){
      //タイマクリア
      window.clearTimeout(myListener.timeoutID);
      delete myListener.timeoutID;
   }
}

const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START;
var myListener={
      QueryInterface: function(aIID){
   if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
      aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
      aIID.equals(Components.interfaces.nsISupports))
   return this;
   throw Components.results.NS_NOINTERFACE;
},

onStateChange: function(aWebProgress, aRequest, aFlag, aStatus)
{
   if(aFlag & STATE_START)
   {
       var uri=aRequest.name;
       alert(uri);
   }
   return 0;
},
tabAdded: function(event){
   var browser = event.target.linkedBrowser;
   //タイマをセット
   myListener.timeoutID=window.setTimeout(myListener.tabAdded2, 10, browser);   
},
tabAdded2 : function(browser){
   var uri=browser.currentURI.spec;
   //URIが取得できるまでタイマをセットし続ける
   if(uri=="about:blank"){
      myListener.timeoutID=window.setTimeout(myListener.tabAdded2, 10, browser);
      return;
   }
   delete myListener.timeoutID;
   alert(uri);
},
onLocationChange: function(){return 0;},
onProgressChange: function() {return 0;},
onStatusChange: function() {return 0;},
onSecurityChange: function() {return 0;},
onLinkIconAvailable: function() {return 0;}
}
投稿記事 Posted: 2008年8月31日(日) 00:45
  記事の件名:  新しいタブでページを開いたときURIを取得する方法  引用付きで返信する
初めまして。早速ですが質問です。

ProgressListenerのonStateChangeイベントは新しいタブでページを開いた場合、
ページをロードし終わるまでURIを取得できないようなんですが、どうすればいいでしょうか。

--------------------------
Firefox3.01
Windows XP Professional
投稿記事 Posted: 2008年8月28日(木) 14:39

All times are UTC + 9 hours


ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean