代码之家  ›  专栏  ›  技术社区  ›  Torsten Marek

从javascript登录到firefox错误控制台

  •  52
  • Torsten Marek  · 技术社区  · 17 年前

    是否可以从网页中运行的javascript代码向Firefox的内置错误控制台添加消息?

    我知道我有萤火虫,它提供了 console 对象和它自己的错误控制台,但我之前正在寻找一个快速修复,找不到任何东西。

    我想这可能根本不可能,以防止恶意网页垃圾邮件的日志?

    9 回复  |  直到 9 年前
        1
  •  32
  •   Ben Blank Jarret Hardie    17 年前

    不能直接从不受信任的javascript(例如来自页面的脚本)写入控制台。但是,即使安装Firebug对您没有吸引力,我还是建议您退房。 Firebug Lite 它不需要安装到浏览器中(事实上,它甚至不需要火狐)。它是一个脚本,您可以将其包含到任何网页中(甚至是动态的),它将为您提供一些基本的Firebug功能(例如 console.log() )

        2
  •  46
  •   Tobias Helbich    13 年前

    如果定义了检查window.console是否存在的全局函数,则可以使用firebug进行跟踪,并且在其他浏览器和/或关闭firebug的控制台跟踪时仍能很好地发挥作用:

    debug = function (log_txt) {
        if (typeof window.console != 'undefined') {
            console.log(log_txt);
        }
    }
    
    debug("foo!");
    
        3
  •  33
  •   Peter Mortensen Pieter Jan Bonestroo    9 年前

    是的,你可以

    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)
    

    更新为实函数

    这是一个简单的黑客,只是为了好玩。

        4
  •  14
  •   skierpage    15 年前

    在火狐4测试版6中,window.console是未定义的,即使firebug 1.6x.0b1已启用并打开,可能是因为其他人讨论的特权问题。但是,firefox 4有了一个新的工具>web控制台,如果打开了,页面上有window.console对象和不受信任的javascript代码可以使用console.log()。Web控制台正在变化(请参见 https://wiki.mozilla.org/Firefox/Projects/Console ,您可能需要更改名为devtools.*的设置。

        5
  •  6
  •   Peter Mortensen Pieter Jan Bonestroo    9 年前

    我只安装Firebug并使用 console.log . 但是,如果你不能做到这一点,你总是可以抛出一个错误:

    throw "foobar";
    throw new Error("bazquux");
    

    当然,这会将您从当前正在执行的代码中分离出来,因此您不能将其用于详细的日志记录,但如果您能够解决这一问题,我认为这是唯一一种将某些内容从框中注销的方法。

        6
  •  3
  •   Peter Mortensen Pieter Jan Bonestroo    9 年前

    阿法克,这是不可能的。但是,如果您对Firefox中的扩展如何与错误控制台交互感兴趣, check this out .

        7
  •  2
  •   MarcH rhardih    16 年前

    此函数不需要任何扩展或库。但是,它授予相关网站完全的特权。不用担心,因为你是开发它的人,对吧?

    
    // 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?
    }
    
        8
  •  1
  •   pluckyglen    17 年前

    如果你感兴趣的话,看看我写的一个脚本——它是一个“便宜”的Firebug替代品,它不会干扰任何普通的控制台(如Safari或Chrome),但会扩展到几乎所有Firebug方法:

    http://code.google.com/p/glentilities/

    看看引擎盖下面,你就会明白我所说的“便宜”是什么意思。-)

    将它与yui或json.org的json序列化程序结合,以排序replicate console.dir。

    Firebug和Firebug Lite绝对是更好的gui,但我总是使用我自己开发的gui来安全地保留日志记录,即使是用于生产代码。-- 没有 不断评论和取消评论,

        9
  •  0
  •   Sergio Abreu    11 年前

    我今天有一个问题,注意到Firebug中的控制台有不同的选项卡,而我的是净化信息,您必须选择所有选项才能看到console.log在没有错误的情况下工作!像这样简单!;^)