【问题标题】:What is the need of console in JavaScript?JavaScript 中的控制台需要什么?
【发布时间】:2012-05-12 10:00:41
【问题描述】:

有人告诉我,使用console.log()方法后,我不需要警告框并准备了一些代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>
function cool()
{console.log("Message");}</script>
</head>

<body onload="cool();">
</body>
</html>

但它不会像警告框那样让 JavaScript 停止运行。它还在向 Firebug 窗口写入“消息”。

  • 它在没有 Firebug 的客户端浏览器上如何工作?

  • 它是否适用于所有使用相同语法的浏览器?

  • 它是否仅用于 Web 开发目的?

【问题讨论】:

    标签: javascript html function console


    【解决方案1】:

    它如何在没有 firebog 的客户端浏览器上工作。

    它不起作用 :-) 实际上 FireBug 不是必需的。例如,现代浏览器(例如 Google Chrome)实现了console.log 方法,并且输出进入它们的控制台。对于旧版浏览器,它不起作用,因为未定义此方法。

    它是否仅用于 Web 开发目的?

    是的,主要用于调试。

    【讨论】:

    【解决方案2】:

    有些浏览器,比如 IE7,没有定义一些控制台方法。如果您经常使用 console.debug、console.info 和其他可能在 IE7 和其他浏览器中不可用的方法,您可以通过在页面上运行任何其他 JavaScript 之前粘贴此代码来处理这种情况:

    // override loggers to avoid throwing errors
    if(window.console == null || window.console == undefined || !window.console) {
               console = { log: function() {}, info: function() {}, warn: function() {}, error: function() {}, trace: function() {}, debug: function() {} };
               var fbscript = document.createElement("script");
               fbscript.src = "https://getfirebug.com/firebug-lite-beta.js";
               fbscript.setAttribute("type","text/javascript");
               document.getElementsByTagName("head")[0].appendChild(fbscript);
    } else if(!console.debug) {
             console.debug = function(text) { if(console.log) console.log("D: "+text); };
    }
    

    首先检查 window.console 是否为 null 或未定义。如果是,那么它将console、console.log、console.info等定义为空函数。这可以防止它们在不支持它们的浏览器中导致错误,并且可以防止您在代码中存在错误或其他问题时不必要地删除原本非常有用的面包屑。

    如果没有找到控制台,它会输入 Firebug Lite。这在没有本机调试器的浏览器中非常有用。

    控制台日志语句优于警报的优点是日志语句不会停止代码的执行。在测试同时触发多个事件的功能或调试代码时,在代码中包含警报可能会掩盖一些未知错误,这些错误可能是您在即将部署和删除警报时才发现的,或者更糟糕的是,它们没有得到直到代码投入生产后才被发现。

    就观众而言,我不认识太多了解 Firebug 或 Chrome 调试器的非技术人员。因此,Web 开发人员似乎确实是这些功能的预期目标。这并不是说它们不能用于其他功能。例如,当我在线观看视频时,我使用 chrome 调试器去除烦人的侧边栏广告。

    【讨论】:

    • 这是你想听的人。 =) IE 的问题也吓坏了我们。用这家伙的方式摆脱它! =)
    【解决方案3】:

    记录消息就是这样做的。

    它如何在没有 firebog 的客户端浏览器上工作。

    它输出到浏览器定义的任何 javascript 控制台。 FireBug 会拦截它,但不需要。

    它是否适用于所有具有相同语法的浏览器?

    是的。

    它是否仅用于 Web 开发目的?

    用于调试 javascript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多