2011-11-24 75 views
0

嗨,我按照說明創建了擴展。Firefox擴展即時HTML注入?

我的問題是,我可以即時注入文本,但不是HTML。 Firefox阻止字符「<」

這是我的代碼在我的XUL文件中。

<?xml version="1.0"?> 
<overlay id="sample" 
     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 

<script src="jquery.js" /> 

<script> 


var myExtension = { 
init: function() { 
    // The event can be DOMContentLoaded, pageshow, pagehide, load or unload. 
    if(gBrowser) gBrowser.addEventListener("DOMContentLoaded", this.onPageLoad, false); 
}, 
onPageLoad: function(aEvent) { 
    var doc = aEvent.originalTarget; // doc is document that triggered the event 
    var win = doc.defaultView; // win is the window for the doc 
     if (win != win.top) return; //only top window. 
     $("body",doc).html('WORK'); 
     $("body",doc).html('<div>NOT WORKING</div>'); 
    } 
} 
window.addEventListener("load", function() { myExtension.init(); }, false); 
</script>  
</overlay> 

非常感謝您的幫助

回答

0

這是一個XUL文件,它使用XML語法。特別是,<script>元素中的XML標籤將被解釋爲這樣 - 你絕對不需要它。爲了防止這種情況你可以用你的腳本轉換爲CDATA section

<script> 
<![CDATA[ 
    doSomething("<foo>bar</foo>"); 
]]> 
</script> 

這可以確保標籤內容實在解釋爲文本。

+0

完美的工作就像魅力。我發現了另一種方法,將腳本放在其他文件myscript.js中,並將這個文件包含在XUL中。 –