我遇到过这种情况多次,但是没有任何解释。网站上没有JS错误。代码确实在执行。用
所以今天又发生了这种情况,我试图在控制台对象中检查控制台对象,我发现一些不规则的地方,好像有什么东西覆盖了控制台对象。
以下是我遇到问题的网站(A站)的屏幕截图:
根据nfroidure的建议,我在头部区域添加了该代码,然后出现了以下错误:
这是一个负责任的决定,因为我认为 if 检查有误。在 Chrome 中,
更新:将运算符更改为
alert()
替换它们可以正常工作。所以今天又发生了这种情况,我试图在控制台对象中检查控制台对象,我发现一些不规则的地方,好像有什么东西覆盖了控制台对象。
以下是我遇到问题的网站(A站)的屏幕截图:
http://ompldr.org/vZ256Mw/Selection_004.jpg
你看到log、warn和info是空函数吗?而且console对象与在另一个站点(站点B)上正常工作的情况不同(后面跟随截图)?
http://ompldr.org/vZ256Mg/Selection_003.jpg
现在两个网站上运行的代码完全相同。B站是我的本地安装,A站是暂存环境,代码中没有任何覆盖控制台对象的内容,所以这种行为可能有什么解释?根据nfroidure的建议,我在头部区域添加了该代码,然后出现了以下错误:
未捕获的错误!(匿名函数)(匿名函数)
,其中第二个指向另一个库文件中的一段代码,其内容如下:if (!("console" in window) || !("firebug" in console))
{
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {}
}
这是一个负责任的决定,因为我认为 if 检查有误。在 Chrome 中,
"console" in window
将为 true,而 "firebug" in window
将为 false,导致替换控制台方法。那里应该使用 &&
,不是吗?更新:将运算符更改为
&&
后,它开始在 A 网站上运行,但我不明白为什么它只在一个网站上触发,而不是另一个。
console
的空值(null)? - Bergi