从JavaScriptlogin到Firefox错误控制台
是否可以通过在网页中运行的JavaScript代码将消息添加到Firefox的内置错误控制台?
我知道我有Firebug,它提供了一个console
对象和它自己的错误控制台,但我之前正在寻找一个快速修复,找不到任何东西。
我想这可能根本不可能,以防止恶意网页垃圾邮件日志?
您不能直接从不受信任的JavaScript(例如来自页面的脚本)写入控制台。 然而,即使安装Firebug不吸引你,我build议检查Firebug Lite ,这不需要安装到浏览器(事实上,甚至不需要Firefox)。 这是一个可以包含到任何网页(甚至是dynamic的)的脚本,它会给你一些基本的Firebugfunction(如console.log()
)。
如果你定义了一个全局函数来检查window.console的存在,你可以使用Firebug进行跟踪,并且仍然可以很好的与其他浏览器和/或者你closuresFirebug的控制台:
debug = function (log_txt) { if (typeof window.console != 'undefined') { console.log(log_txt); } } debug("foo!");
是的,你可以= P
function log(param){ setTimeout(function(){ throw new Error("Debug: " + param) },0) } //Simple Test: alert(1) log('This is my message to the error log -_-') alert(2) log('I can do this forever, does not break') alert(3)
更新到一个真正的function
这是一个简单的黑客,只是为了好玩。
即使Firebug 1.6X.0b1已启用并打开,window.console在Firefox 4 beta 6中未定义,可能是因为其他人讨论的特权问题。 然而,Firefox 4有一个新的工具> Web控制台,如果这是开放的,你有一个window.console对象和页面上的不可信JavaScript代码可以使用console.log()。 Web控制台不断变化(请参阅https://wiki.mozilla.org/Firefox/Projects/Console ),您可能需要在about:config,YMMV中更改名为devtools。*的设置。
我只想安装Firebug并使用console.log
。 如果你不能这样做,但是,你总是可以抛出一个错误:
throw "foobar"; throw new Error("bazquux");
当然,这会让你摆脱目前正在执行的代码,所以你不能使用它来进行详细的日志logging,但是如果你可以解决这个问题,我认为这是获取某些东西的唯一方法。
AFAIK,这是不可能的。 但是,如果您对Firefox的扩展如何与错误控制台进行交互感兴趣, 请查看 。
该function不需要任何扩展或库。 但是,它授予相关网站的全部特权。 不用担心,因为你是一个开发者,对吧?
// Define mylog() function to log to Firefox' error console if such a // thing exists function defineMyLog() { // Provide a useless but harmless fallback mylog = function(msg) { }; // return; // disable in production if (typeof(netscape) === "undefined") { // alert("Logging implemented only for Firefox"); return; } // The initial auth popup can be avoided by pre-setting some magic user_pref // ( "capability.principal.codebase.p0.granted", "UniversalXPConnect"), etc. try { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); } catch (e) { // User has denied privileges // alert(e.name + ": " + e.message); return; } ffconsoleService = Components.classes["@mozilla.org/consoleservice;1"] .getService(Components.interfaces.nsIConsoleService); mylog = function (msg) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); ffconsoleService.logStringMessage(new Date().toLocaleTimeString() + ": " + msg); } mylog("Firefox logging function has been defined"); // window.open("javascript:"); // this URL does not work anymore? }
如果你有兴趣,看看我写的脚本 – 这是一个“便宜”的Firebugreplace,不会影响任何正常的控制台(如Safari或Chrome),但几乎所有的Firebug方法扩展它:
http://code.google.com/p/glentilities/
看看引擎盖下,你会看到我的意思是“便宜”。 🙂
将它与YUI或json.org的JSON序列化程序结合起来,以便复制console.dir。
Firebug和Firebug Lite绝对是更好的graphics用户界面(GUI),但是我始终用我自己生产的一个来保持采伐安全,即使是生产代码 – 也不需要经常发表评论和评论,
我今天有一个问题,并注意到Firebug中的控制台有不同的标签,我的是在净化信息,你必须select所有选项才能看到console.log工作,而不会出现错误! 这样简单! ; ^)