回答
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.webRequest不適用於Chrome 17
- 4. .load()jQuery不適用於chrome?
- 5. 角度不適用於Chrome
- 6. XMLHttpRequest不適用於Chrome
- 7. 不適用於Android的菜單Chrome Chrome
- 8. Jquery/Ajax不適用於Chrome和FireFox,但不適用於IE
- 9. Ajax調用適用於Chrome,但不適用於IE7
- 10. Angularjs代碼適用於桌面Chrome,但不適用於移動Chrome
- 11. onclick不適用於Chrome應用程序?
- 12. jQuery ajax適用於Chrome,但不適用於Firefox或Safari
- 13. Z-Index不適用於Safari - 適用於Firefox和Chrome
- 14. Kerberos授權不適用於Chrome和FireFox,但適用於IE
- 15. 代碼適用於Firefox,但不適用於Chrome
- 16. jQuery適用於Internet Explorer,但不適用於Chrome和Firefox
- 17. Userscript代碼適用於Firefox,但不適用於Chrome? (unsafeWindow)
- 18. @ font-face只適用於IE,不適用於chrome
- 19. CSS轉換適用於Chrome,但不適用於Firefox或Safari?
- 20. JavaScript適用於IE + Chrome,但不適用於FF
- 21. CSS3動畫適用於Chrome瀏覽器,不適用於Firefox
- 22. 網站適用於Chrome,但不適用於Safari,Firefox或Opera?
- 23. jQuery代碼適用於Firefox而不適用於Chrome
- 24. 搜索不適用於IE 10,但適用於Chrome,Safari,Opera,Firefox
- 25. JQuery $ .ajax請求適用於IE,但不適用於FF和Chrome
- 26. window.performance.navigation.type適用於IE和Firefox,但不適用於CHROME
- 27. 另一種適用於Chrome但不適用於Firefox的JavaScript
- 28. 代碼適用於Chrome和Firefox,但不適用於IE
- 29. UpdatePanel僅適用於Chrome,不適用於IE/Mozilla。爲什麼?
- 30. jQuery不適用於FF,但適用於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