web-dev-qa-db-ja.com

alert()がChromeで機能しない

error

'言っ途切れる。 alert()を使用しても機能しない理由はまったくわかりません。 Firefoxでは完全に動作しますが、Chromeではエラーが発生します。

11
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
17
Matty F

テストサーバーで最近同じ問題が発生しました。これが発生している可能性のある理由を検索し、ここで見つけたソリューションをテストした後、作業しているスクリプトがアラートを大量にポップアップする数時間前に、[このページのポップアップの作成を停止する]オプションをクリックしたことを思い出しました。

解決策は、タブを閉じて新しいタブを開くのと同じくらい簡単でした。

15
whitebeard

このスレッドを見てください: http://code.google.com/p/chromium/issues/detail?id=4158

この問題は、javascriptメソッド「window.open(URL、windowName [、windowFeatures])」が原因で発生します。 3番目のパラメーターwindowFeaturesが指定されている場合、Chromeのポップアップ制約されたウィンドウではアラートボックスは機能しません。これは単純化された削減です。

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

3番目のパラメーターwindowFeaturesが無視される場合、アラートボックスは次のようにChromeのポップアップで機能します(ポップアップは実際にはChromeの新しいタブとして開かれます)。

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

iE7、Firefox3、Safari3では発生しません。chrome特定の問題です。

簡略化された削減については、添付ファイルも参照してください

1
tofutim

これは、jQueryを必要とせず、無効にされた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

0
Alpha G33k

この行を本文の最後に置きます。この行がコンパイラーによって読み取られた時点では、DOMがまだ準備されていない可能性があります。

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