2010-12-30 23 views
1

Webページ内の特定の単語を強調表示するための拡張機能を作成しようとしています。 document.body.innerHTML.replace()は、アドレスバーのURLも置き換えます。だからこのコードが出てきた瞬間、ページは正しく読み込まれません。 この問題を回避する方法はありますか? browser.xulオーバーレイで次のようにリスナーが登録されているアドレスバーのURLをdocument.body.innerHTML.replace()で置き換えます。

onPageLoad: function(aEvent) { 
     var doc = aEvent.originalTarget; 
     var str="the"; 
var regex; 
var regex = new RegExp(str, "g"); 
    doc.body.innerHTML = doc.body.innerHTML.replace(regex,'<b>'+str+'</b>'); 
} 

window.addEventListener("load", function() { 
    myExtension.init(); 
}, false); 
var myExtension = { 
    init: function() { 
    var appcontent = document.getElementById("appcontent"); // browser 
    if(appcontent) 
     appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, false); 
    }, 
+0

イベントハンドラは? –

+0

これは関連性があるかもしれません: "現在のFirefoxのトランクナイトリーはドキュメントだけでなく、xul:images(タブブラウザーのfavicons)のonPageLoad関数を起動します。ドキュメントのみを扱う場合は、' aEvent.originalTarget.nodeName = = "#document" '" https://developer.mozilla.org/en/Code_snippets/On_page_load – MatrixFrog

+0

window.addEventListener( "load"、function(){myExtension.init();}、false); var myExtension = { init:function(){ var appcontent = document.getElementById( "appcontent"); //ブラウザ if(appcontent) appcontent.addEventListener( "DOMContentLoaded"、myExtension.onPageLoad、false); }、 – divya

答えて

0
onPageLoad: function(aEvent) {  
    if(aEvent.originalTarget.nodeName=="#document"){ 
    var doc = aEvent.originalTarget; 
    var str="the"; 
    var regex; 
    var regex = new RegExp(str, "g"); 
    doc.body.innerHTML = doc.body.innerHTML.replace(regex,'<b>'+str+'</b>'); 
    } 
} 

ザ・機能の条件がトリックを行うために発生した場合.. :)

関連する問題