回答
window.alert = null;
alert('test'); // fail
delete window.alert; // true
alert('test'); // win
window
是DOMWindow
一個實例,並通過設置東西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
感謝隊友,這似乎是個伎倆。我不知道什麼是'window.alert'設置爲空,即使刪除我帶來的所有第三方庫都沒有帶領任何地方。奇怪。 – 2011-05-31 10:15:36
@Charlie Somerville:也許你有某種擴展,將腳本插入到網頁中? – pimvdb 2011-05-31 14:00:23
@pimvdb原來,Chrome插件「Better Popup Blocker」決定設置alert,確認並提示爲null是適當的。卸載。 – 2011-06-01 07:13:18
在此線程請看:http://code.google.com/p/chromium/issues/detail?id=4158
問題是由JavaScript 方法 「window.open(URL,windowName [, windowFeatures])」 引起的。如果指定了第三個參數 windowFeatures, 則警告框不會在Chrome中 彈出窗口的限制工作, 這裏是一個簡化的減少:
http://go/reductions/4158/test-home-constrained.html
如果第三個參數windowFeatures是 忽略,那麼警告框在Chrome中 彈出作品(彈出實際上是 開闢爲Chrome新標籤),像這樣 :
http://go/reductions/4158/test-home-newtab.html
它不會發生在IE7,Firefox3或 Safari3中,這是一個特定於Chrome的問題。
參見附件進行簡化 減少
該網頁不在彈出窗口或任何內容,它只是一個普通頁面。 – 2011-05-31 07:33:17
我的測試服務器上最近有同樣的問題。在找到可能發生的原因並測試我在這裏找到的解決方案之後,我回想起我在幾小時之前點擊了「停止創建彈出窗口的頁面」選項,當時我正在處理的腳本瘋狂地彈出警報。
解決方案非常簡單,只需關閉標籤並打開一個新標籤!
這個工作對我來說也是如此,我禁用了Chrome中的彈出窗口並忘記了該操作。一旦我打開新標籤,一切都很好。謝謝 :) – 2015-12-28 10:07:57
這裏是不需要ajQuery,將啓用已禁用的iframe
for (var i = 0; i < document.getElementsByTagName('iframe').length; i++) {
document.getElementsByTagName('iframe')[i].setAttribute('sandbox','allow-modals');
}
下面是在此之後與警報()工作的一個codepen演示修復以及警報(就像codepen)一個片斷: http://codepen.io/nicholasabrams/pen/vNpoBr?editors=001
把這條線放在身體的盡頭。在編譯器讀取此行時,DOM可能還沒有準備好。
<script type="text/javascript" src="script.js"></script>"
- 1. jquery load()僅適用於alert()
- 2. alert()不適用於ajax錯誤函數
- 3. 適用於Chrome,但不適用於IE9 ...?
- 4. jquery.validate.unobtrusive不適用於Firefox/Chrome
- 5. 字體不適用於Chrome
- 6. TimelineLite(TweenMax)不適用於Chrome
- 7. chrome.webRequest不適用於Chrome 17
- 8. window.onbeforeunload不適用於Chrome
- 9. $ .focus()不適用於chrome
- 10. XMLHttpRequest不適用於Chrome
- 11. .load()jQuery不適用於chrome?
- 12. Window.Print()不適用於Chrome/Firefox
- 13. DefaultWebSessionManager不適用於Chrome
- 14. 角度不適用於Chrome
- 15. 不適用於Android的菜單Chrome Chrome
- 16. IE6變量只適用於alert()
- 17. Jquery/Ajax不適用於Chrome和FireFox,但不適用於IE
- 18. 使用jQuery插件的代碼適用於Chrome,但不適用於Chrome擴展?
- 19. Ajax調用適用於Chrome,但不適用於IE7
- 20. Charles SSL Proxy適用於chrome,但不適用於應用程序
- 21. Angularjs代碼適用於桌面Chrome,但不適用於移動Chrome
- 22. onclick不適用於Chrome應用程序?
- 23. SVG使用defs不適用於chrome 46
- 24. PHP類適用於Chrome,但不適用於Firefox
- 25. jquery腳本適用於Chrome,但不適用於Firefox,例如
- 26. OnClick Dropdown適用於FireFox,但不適用於Chrome或IE?
- 27. Selenium ... Program Works適用於Firefox,但不適用於Chrome
- 28. Javascript適用於Chrome瀏覽器,但不適用於IE或Firefox
- 29. @ font-face只適用於IE,不適用於chrome
- 30. 元素點擊不適用於Firefox和IE,但適用於Chrome
你可以試試'window.alert'(不用調用)併發布結果嗎? – pimvdb 2011-05-31 07:17:06
也許你在代碼中的某處覆蓋了警報? 'alert('foo');'在我的Chrome中運行得非常好。 – Xaerxess 2011-05-31 07:19:25
@Xaerxess不會解釋爲什麼它可以在Firefox中工作。 – alex 2011-05-31 07:20:06