在普通浏览器中运行的网页中,我们可以使用console.log()/error()/warn()
将消息打印到Web控制台。但是,在xulrunner应用程序中运行的页面(html或xul)中,似乎console.log()/error()/warn()
以静默方式丢弃消息。
我设置了这些首字母:
pref("browser.dom.window.dump.enabled", true);
pref("javascript.options.showInConsole", true);
并使用-console
或-jconsole
选项运行xulrunner。
那么,是否可以在xulrunner应用程序中启用javascript console.log / error / warn?
我知道dump()
函数适用于带有-console
的xulrunner,但它不是标准的,并且在我的xulrunner应用程序中运行了无法控制的网页。
有关详细说明此问题的示例,您可以结帐https://github.com/matthewkastor/XULRunner-Examples.git
,然后运行浏览器'使用console
的网页申请。
答案 0 :(得分:2)
XULRunner将丢弃传递给console.log()的消息,除非您将调试器附加到它。这可以通过远程调试来实现:XULRunner作为调试对象,firefox作为调试器。将调试器连接到XULRunner应用程序后,您可以在调试器中看到console.log()ed消息。
可以在MDN找到Instruction for remote debgging。
您可能还想将firefox的devtools.debugger.remote-enabled
pref设置为true
。
在您的应用中使用此代码:
var windowtype = ...
Components.utils.import('resource://gre/modules/devtools/dbg-server.jsm');
DebuggerServer.chromeWindowType = windowtype;
if (!DebuggerServer.initialized) {
DebuggerServer.init();
DebuggerServer.addBrowserActors(windowtype);
}
DebuggerServer.openListener(6000);
如果您的网页是(x)html,请windowtype
分配null
;如果您的网页为xul,请为windowtype
分配xul:window
元素的windowtype属性的相同值:
<xul:window windowtype=... >
...
</xul:window>
答案 1 :(得分:0)
您可以使用nsIConsoleService。
对于简单的日志消息:
function consoleLog(aMsg){
var console;
console = Components.classes["@mozilla.org/consoleservice;1"]
.getService(Components.interfaces.nsIConsoleService);
console.logStringMessage(aMsg);
}
console.log('My important message');
参考:nsIConsoleService在MDN。