繁体   English   中英

如何在xulrunner应用程序中启用javascript console.log()/ error()/ warn()?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM