2011-05-31 98 views
10

erroralert()不適用於Chrome

'nuff說。我完全不知道爲什麼使用alert()不行。它在Firefox中完美運行,但在Chrome中出現此錯誤。

+1

你可以試試'window.alert'(不用調用)併發布結果嗎? – pimvdb 2011-05-31 07:17:06

+0

也許你在代碼中的某處覆蓋了警報? 'alert('foo');'在我的Chrome中運行得非常好。 – Xaerxess 2011-05-31 07:19:25

+0

@Xaerxess不會解釋爲什麼它可以在Firefox中工作。 – alex 2011-05-31 07:20:06

回答

16
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 
+0

感謝隊友,這似乎是個伎倆。我不知道什麼是'window.alert'設置爲空,即使刪除我帶來的所有第三方庫都沒有帶領任何地方。奇怪。 – 2011-05-31 10:15:36

+0

@Charlie Somerville:也許你有某種擴展,將腳本插入到網頁中? – pimvdb 2011-05-31 14:00:23

+2

@pimvdb原來,Chrome插件「Better Popup Blocker」決定設置alert,確認並提示爲null是適當的。卸載。 – 2011-06-01 07:13:18

1

在此線程請看: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的問題。

參見附件進行簡化 減少

+0

該網頁不在彈出窗口或任何內容,它只是一個普通頁面。 – 2011-05-31 07:33:17

13

我的測試服務器上最近有同樣的問題。在找到可能發生的原因並測試我在這裏找到的解決方案之後,我回想起我在幾小時之前點擊了「停止創建彈出窗口的頁面」選項,當時我正在處理的腳本瘋狂地彈出警報。

解決方案非常簡單,只需關閉標籤並打開一個新標籤!

+0

這個工作對我來說也是如此,我禁用了Chrome中的彈出窗口並忘記了該操作。一旦我打開新標籤,一切都很好。謝謝 :) – 2015-12-28 10:07:57

0

這裏是不需要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

0

把這條線放在身體的盡頭。在編譯器讀取此行時,DOM可能還沒有準備好。

<script type="text/javascript" src="script.js"></script>" 
相關問題