我们有一个在kiosk模式Firefox中运行的Web应用程序,使用RKiosk扩展来实现这一目标。我们怀疑系统中存在非常罕见的错误,导致JavaScript错误。但是因为我们无法访问JavaScript控制台,所以我们无法检查日志。
我正在搜索一个选项,让Firefox将所有JavaScript控制台消息记录到文件中,而不管打开的选项卡和页面如何。我似乎无法找到任何扩展。我已经在使用log4javascript将错误发送回服务器,但似乎我们的应用程序崩溃的方式是它完全跳过了日志记录。
答案 0 :(得分:3)
写一个文件对我来说听起来像是一项繁琐的工作。它需要浏览器代码通常不具有的权限,并且您必须与您必须编写的加载项进行协商才能访问file I/O。
据我所知,你的问题是
我想让Firefox记录所有错误
有几种方法可以解决这个问题
现在,您可以写信到localStorage
或IndexedDB
,而不是写入实际文件。
localStorage["myApplog"] = localStorage["myApplog"] || "";
var oldLog = console.log;
console.log = function(){
oldLog.apply(console,arguments); // use the old console log
var message = "\n "+(new Date).toISOString() + " :: "+
Array.prototype.join.call(arguments," , "); // the arguments
localStorage["myApplog"] += message;
}
这是相当脏的而且相当慢,但它应该完成工作,您可以稍后在本地存储中访问日志。如果我没记错的话,LocalStorage有一个约5MB的限制,如果你不熟悉日志,我觉得这已经足够了。您也可以选择性地运行它。
这与Pumbaa80建议的类似。您只需覆盖window.onerror
并仅记录错误。
// put an empty string in loggedWinErrors first
var oldError = window.onerror || function(){};
window.onerror = function(err,url,lineNumber){
oldError.call(this,err,url,lineNumber);
var err ="\n Error: (file: " + url+", error: "+err+", lineNumber: "+lineNumber+")");
localStorage["loggedWinErrors"] += err;
}
这是功能最强大的版本,但它提供了最有问题的用户体验。您在虚拟机中运行自助服务终端,检测到未捕获的异常 - 当您冻结计算机并保存其状态时,请改为运行备份VM。在处理最可怕的错误时,我只需要这样做,而且不是很好。除非你真的想要整个捕获状态 - 不要这样做。
真的,在此之前做扩展 - 这很乏味但结果非常可靠。
总之,我认为第一种方法甚至只是第二种方法足以满足您的需求。 localStorage
是一个抽象的存储,网页可以在没有安全问题的情况下保存状态。如果这还不够大,我们可以谈谈IndexedDB解决方案。
这一切都取决于你的用例。
答案 1 :(得分:3)
您可以使用 XULRunner ... XUL应用程序的Mozilla运行时环境。它使用Gecko之类的Firefox和:
答案 2 :(得分:1)
你考虑过远程登录吗?
我通常会指定window.onerror
向远程存储错误详细信息的网络服务器发送请求。如果您愿意,可以使用console.log
执行相同操作。
答案 3 :(得分:1)
你试过jserrorcollector吗?我们正在使用它,它工作正常(仅在Firefox中)。它仅适用于Java。
// Initialize
FirefoxProfile ffProfile = null;
ffProfile = new FirefoxProfile();
JavaScriptError.addExtension(ffProfile);
// Get the errors
List<JavaScriptError> jsErrors = JavaScriptError.readErrors(webDriver);
答案 4 :(得分:1)
尝试以下控制台导出。它是Firebug Firefox的插件。这很方便。
答案 5 :(得分:0)
如果您能够/愿意从Firefox切换到Chrome或Opera,您将能够使用Sandboxed Filesystem API编写本地文件。参见:
使用chrome.exe --kiosk <url>
然后,您需要禁用Alt-F4和Ctrl-Alt-Del,在Windows上可以使用多个第三方工具(例如Auto Hotkey(Disable Ctrl-Alt-Del Script)来完成。
答案 6 :(得分:0)
您可以使用Qbaka之类的远程日志记录脚本。它捕获每个JS错误并将其发送到Qbaka服务器。在那里,您可以登录并查看所有JS错误。 Qbaka为每条错误消息存储确切的错误消息,脚本,行号,堆栈跟踪和使用过的浏览器。