alert()无法在Chrome中使用

ano*_*ard 11 javascript alert google-chrome

错误

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

Mat*_*y F 17

window.alert = null;
alert('test'); // fail
delete window.alert; // true
alert('test'); // win
Run Code Online (Sandbox Code Playgroud)

window是一个实例DOMWindow,并通过设置window.alert,正确的实现被"遮蔽",即访问alert它时首先在window对象上查找它.通常没有找到它,然后它上升到原型链以找到本机实现.但是,当手动alert向其添加属性时,window立即找到它并且不需要上升原型链.使用delete window.alert你可以删除window自己的属性并再次暴露原型实现alert.这可能有助于解释:

window.hasOwnProperty('alert'); // false
window.alert = null;
window.hasOwnProperty('alert'); // true
delete window.alert;
window.hasOwnProperty('alert'); // false
Run Code Online (Sandbox Code Playgroud)

  • @pimvdb原来,Chrome插件"Better Popup Blocker"决定设置alert,confirm并提示为null是合适的.卸载. (2认同)

whi*_*ard 14

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

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