alert()无法在Chrome中使用

时间:2011-05-31 07:15:35

标签: javascript google-chrome alert

error

努夫说。我完全不知道为什么使用alert()就行不通。它在Firefox中完美运行,但在Chrome中出现了这个错误。

5 个答案:

答案 0 :(得分:17)

window.alert = null;
alert('test'); // fail
delete window.alert; // true
alert('test'); // win

windowDOMWindow的一个实例,通过将某些内容设置为window.alert,正确的实现被“遮蔽”,即访问alert时它首先要查看在window对象上。通常没有找到它,然后它上升到原型链以找到本机实现。但是,当手动将alert属性添加到window时,它会立即找到它并且不需要上升原型链。使用delete window.alert,您可以删除窗口自己的属性,并再次公开alert的原型实现。这可能有助于解释:

window.hasOwnProperty('alert'); // false
window.alert = null;
window.hasOwnProperty('alert'); // true
delete window.alert;
window.hasOwnProperty('alert'); // false

答案 1 :(得分:14)

我最近在测试服务器上遇到了同样的问题。在寻找可能发生的原因并测试我在此处找到的解决方案之后,我回想起我已经点击了“停止此页面”创建弹出窗口"我正在处理的脚本几个小时之前的选项是疯狂弹出警报。

解决方案就像关闭标签并打开新标签一样简单!

答案 2 :(得分:1)

看一下这个主题:http://code.google.com/p/chromium/issues/detail?id=4158

  

问题是由javascript引起的   方法“window.open(URL,windowName [,   windowFeatures])“。如果是第3个   参数windowFeatures已指定,   然后警报框不起作用   Chrome中的popup约束窗口,   这是一个简化的缩减:

     

http://go/reductions/4158/test-home-constrained.html

     

如果是第3个参数windowFeatures   忽略,然后警报框工作   Chrome中的弹出窗口(弹出窗口实际上是   作为Chrome中的新标签打开,就像   这样:

     

http://go/reductions/4158/test-home-newtab.html

     

它不会发生在IE7,Firefox3或   Safari3,这是一个特定于chrome的问题。

     

另请参阅附件以简化   减少

答案 3 :(得分:0)

这是一个不需要ajQuery的代码段,可以在禁用的iframe中启用警报(就像在codepen上一样)

for (var i = 0; i < document.getElementsByTagName('iframe').length; i++) {
    document.getElementsByTagName('iframe')[i].setAttribute('sandbox','allow-modals');
}

以下是在此修复后使用alert()的codepen演示:http://codepen.io/nicholasabrams/pen/vNpoBr?editors=001

答案 4 :(得分:0)

把这条线放在身体的尽头。可能是DOM尚未就绪,此时此编译器已读取此行。

<script type="text/javascript" src="script.js"></script>"