2011-11-24 70 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中。 –