我最近一直在进行Firefox扩展开发,遇到了一些问题:
所以,在browser.xul中我定义了这些行:
<overlay id="sample" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="jquery.js" />
<script src="global.js" />
</overlay>
所以,在global.js中,我可以访问所有jQuery内容,并尝试在那里加载一个简单的脚本:
var inner = null;
var o = function () {
var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
return {
init : function () {
alert('here loading inner..');
$.get('http://www.example.com/script.js', function(d) {
alert('loaded inner script!');
inner = d;
gBrowser.addEventListener("load", function () {
alert('onload');
}, false);
}).error(function(e) { alert('error loading inner..'); setTimeout(o.init,1000); });
$(this).ajaxError(function() { alert('ajaxError'); });
}
}
}
window.addEventListener("load", o.init, false);
但是我也没有收到“加载的内部脚本”,也没有收到“加载内部错误”警告..而且我没有看到错误控制台记录扩展中的任何错误...我假设{{1}由于某些限制可能会默默地失败,但有没有正确的方法来正常调试错误?错误控制台对于扩展名是静默的,它只显示来自网页的错误
答案 0 :(得分:7)
如果您查看文章https://developer.mozilla.org/en/Setting_up_extension_development_environment,则建议您设置一些偏好设置,包括
javascript.options.showInConsole
= true。将chrome文件中的错误记录到错误控制台。
答案 1 :(得分:3)
一般来说,在XUL页面中使用JQuery可能会有问题,因为它假定文档是 HTML DOM而不是 XML DOM,而{{1} }是一个 HTML 窗口,而不是 XUL 窗口。如果我是你,我会使用subscript loader。要调试你可以使用Venkman虽然它有点不稳定,我经常只使用window
语句到控制台。
更新:请参阅下面有关Browser Toolbox的评论。