'nuff sagte. Ich habe absolut keine Ahnung, warum die Verwendung von alert () dort nicht funktioniert. Es funktioniert perfekt in Firefox, gibt aber diesen Fehler in Chrome aus.
window.alert = null;
alert('test'); // fail
delete window.alert; // true
alert('test'); // win
window
ist eine Instanz von DOMWindow
. Wenn Sie etwas auf window.alert
setzen, wird die korrekte Implementierung "gespiegelt", d. h. wenn Sie auf alert
zugreifen, sucht sie zuerst im window
-Objekt danach. Normalerweise wird dies nicht gefunden, und dann wird die Prototypkette hochgefahren, um die native Implementierung zu finden. Wenn Sie jedoch die alert
-Eigenschaft manuell zu window
hinzufügen, wird sie sofort gefunden und muss nicht in der Prototypkette nach oben verschoben werden. Mit delete window.alert
können Sie die Fenstereigenschaft entfernen und erneut die Prototypimplementierung von alert
verfügbar machen. Dies kann helfen zu erklären:
window.hasOwnProperty('alert'); // false
window.alert = null;
window.hasOwnProperty('alert'); // true
delete window.alert;
window.hasOwnProperty('alert'); // false
Ich hatte vor kurzem dasselbe Problem auf meinem Testserver. Nachdem ich nach möglichen Gründen gesucht und die hier getesteten Lösungen getestet hatte, erinnerte ich mich daran, dass ich vor einigen Stunden auf die Option "Diese Seite mit dem Erstellen von Popups erstellen" geklickt hatte, als das Skript, an dem ich gerade arbeitete, Alarme auslöste .
Die Lösung war so einfach wie das Schließen der Registerkarte und das Öffnen einer neuen!
Sehen Sie sich diesen Thread an: http://code.google.com/p/chromium/issues/detail?id=4158
Das Problem wird durch die JavaScript-Methode "Window.open (URL, windowName [ WindowFeatures])" verursacht. Wenn der 3. Parameter windowFeatures angegeben ist, funktioniert Das Alarmfeld im Popup-Fenster In Chrome nicht. Hier ist eine vereinfachte Reduzierung:
http: //go/reductions/4158/test-home-constrained.html
Wenn der dritte Parameter windowFeatures Ignoriert wird, funktioniert das Benachrichtigungsfeld im Popup In Chrome (das Popup ist Als neue Registerkarte in Chrome geöffnet), wie [.____. .] diese:
http: //go/reductions/4158/test-home-newtab.html
in IE7, Firefox3 oder Safari3 ist dies nicht der Fall, es handelt sich um ein Chrom-spezifisches Problem.
Siehe auch Anhänge für vereinfachte Reduzierungen
Hier ist ein Ausschnitt, der ajQuery nicht benötigt und Alarme in einem deaktivierten iframe (wie bei codepen) aktiviert.
for (var i = 0; i < document.getElementsByTagName('iframe').length; i++) {
document.getElementsByTagName('iframe')[i].setAttribute('sandbox','allow-modals');
}
Hier ist eine codepen-Demo, die auch nach diesem Update mit einer Warnung () arbeitet: http://codepen.io/nicholasabrams/pen/vNpoBr?editors=001
setze diese Linie am Ende des Körpers. Möglicherweise ist das DOM noch nicht bereit, wenn diese Zeile vom Compiler gelesen wird.
<script type="text/javascript" src="script.js"></script>"