![](/img/trans.png)
[英]console.log/warn/error - native, vanilla JavaScript more performant alternative?
[英]How to enable javascript console.log()/error()/warn() in xulrunner applications?
在正常浏览器中运行的网页中,我们可以使用console.log()/error()/warn()
将消息打印到Web控制台。 但是,在xulrunner应用程序中运行的页面(html或xul)中, console.log()/error()/warn()
似乎会静默删除消息。
我设置了这些首选项: pref("browser.dom.window.dump.enabled", true); pref("javascript.options.showInConsole", true);
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
在带有网页的“浏览器”应用程序上运行。
除非您将调试器附加到XULRunner,否则XULRunner将删除传递到console.log()的消息。 这可以通过远程调试来实现:XULRunner作为debuggee,firefox作为调试器。 调试器附加到XULRunner应用程序后,您可以在调试器中看到console.log()ed消息。
可以在MDN上找到有关远程调试的说明 。
您可能还需要将firefox的devtools.debugger.remote-enabled
设置为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>
您可以使用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');
参考:MDN上的nsIConsoleService 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.