首先,我相信这是一个琐碎的问题,但我无法理解为什么会发生这种情况,也找不到答案。我在谷歌上搜索了一下我的问题,结果不佳,但如果我错过了什么并浪费了您的时间,请指出正确的方向并接受我的道歉。
说到具体情况,我正在构建一个简单的脚本来显示由分布式算法(giraph)绘制的图形,并在Linux上工作。我导入所有库,特别是jQuery,在Firefox(版本36.0.1)中一切正常。但是转到Chrome(版本41.0.2272.89(64-bit))时,页面停止工作。调查问题后,我发现错误位于jQuery库中的
无论如何,在输入控制台时,会自动补全"Math"变量,并得到以下结果:
这种情况在MacOS X Mavericks上使用Chrome时不会发生。有人之前遇到过这种行为吗?
编辑:不幸的是,我认为这不是命名空间冲突。在我的库中,我仅导入一个其他库(除了jQuery之外),即Sigma js。如建议所述,我在控制台中编写了Math并尝试了解哪个库覆盖了Math(使用“显示函数定义”),结果如下,取自名为“VM53”的文件(我没有直接编写或链接)。
说到具体情况,我正在构建一个简单的脚本来显示由分布式算法(giraph)绘制的图形,并在Linux上工作。我导入所有库,特别是jQuery,在Firefox(版本36.0.1)中一切正常。但是转到Chrome(版本41.0.2272.89(64-bit))时,页面停止工作。调查问题后,我发现错误位于jQuery库中的
jQuery.extend()
函数内,在以下行中:expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
事实上,尝试在浏览器控制台中调用Math.random()
会导致:
> Math.random();
> Uncaught TypeError: Undefined is not a function
无论如何,在输入控制台时,会自动补全"Math"变量,并得到以下结果:
> Math
> function (){return "";}
这种情况在MacOS X Mavericks上使用Chrome时不会发生。有人之前遇到过这种行为吗?
编辑:不幸的是,我认为这不是命名空间冲突。在我的库中,我仅导入一个其他库(除了jQuery之外),即Sigma js。如建议所述,我在控制台中编写了Math并尝试了解哪个库覆盖了Math(使用“显示函数定义”),结果如下,取自名为“VM53”的文件(我没有直接编写或链接)。
(function (){
for (var i in window)
{
try {
var jsType = typeof window[i];
switch (jsType.toUpperCase())
{
case "FUNCTION":
if (window[i] !== window.location)
{
if (window[i] === window.open || (window.showModelessDialog && window[i] === window.showModelessDialog))
window[i] = function(){return true;};
else if (window[i] === window.onbeforeunload) // To try to fix onbeforeunload pop ups some users report seeing but I can't replicate.
window.onbeforeunload = null;
else if (window[i] === window.onunload)
window.onunload = null;
else
window[i] = function(){return "";};
}
break;
}
}
catch(err)
{}
}
for (var i in document)
{
try {
var jsType = typeof document[i];
switch (jsType.toUpperCase())
{
case "FUNCTION":
document[i] = function(){return "";};
break;
}
}
catch(err)
{}
}
try {
eval = function(){return "";};
unescape = function(){return "";};
String = function(){return "";};
parseInt = function(){return "";};
parseFloat = function(){return "";};
Number = function(){return "";};
isNaN = function(){return "";};
isFinite = function(){return "";};
escape = function(){return "";};
encodeURIComponent = function(){return "";};
encodeURI = function(){return "";};
decodeURIComponent = function(){return "";};
decodeURI = function(){return "";};
Array = function(){return "";};
Boolean = function(){return "";};
Date = function(){return "";};
Math = function(){return "";};
Number = function(){return "";};
RegExp = function(){return "";};
var oNav = navigator;
navigator = function(){return "";};
oNav = null;
}
catch(err)
{}
})();
Math.random
。尝试从页面中删除其他<script>
标记并查看是什么导致了错误。 - Ginden