web-dev-qa-db-fra.com

alert () ne fonctionne pas dans Chrome

error

'Nuff a dit. Je n'ai absolument aucune idée pourquoi utiliser alert () ne fonctionnerait pas. Cela fonctionne parfaitement dans Firefox, mais donne cette erreur dans Chrome.

10
anonymous coward
window.alert = null;
alert('test'); // fail
delete window.alert; // true
alert('test'); // win

window est une instance de DOMWindow et, si vous définissez quelque chose sur window.alert, l’implémentation correcte est "masquée", c’est-à-dire que lorsqu’elle accède à alert, elle la recherche d’abord sur l’objet window. Généralement, cette information n’est pas trouvée et la chaîne de prototypes monte dans la chaîne pour trouver l’implémentation native. Cependant, lorsque vous ajoutez manuellement la propriété alert à window, elle la trouve immédiatement et n'a pas besoin de remonter dans la chaîne de prototypes. En utilisant delete window.alert, vous pouvez supprimer la propriété propre de la fenêtre et exposer à nouveau l'implémentation prototype de alert. Cela peut aider à expliquer:

window.hasOwnProperty('alert'); // false
window.alert = null;
window.hasOwnProperty('alert'); // true
delete window.alert;
window.hasOwnProperty('alert'); // false
17
Matty F

J'ai eu le même problème récemment sur mon serveur de test. Après avoir cherché les raisons qui pourraient expliquer cette situation et avoir testé les solutions trouvées ici, je me suis rappelé que j'avais cliqué sur l'option "Empêcher cette page de créer des fenêtres contextuelles" quelques heures auparavant, lorsque le script sur lequel je travaillais était en train de générer des alertes. . 

La solution était aussi simple que de fermer la languette et d’en ouvrir une nouvelle!

14
whitebeard

Jetez un oeil à cette discussion: http://code.google.com/p/chromium/issues/detail?id=4158

Le problème est dû à javascript méthode "window.open (URL, windowName [ windowFeatures])". Si le 3ème le paramètre windowFeatures est spécifié, alors la case d'alerte ne fonctionne pas dans le Fenêtre contextuelle contrainte dans Chrome, voici une réduction simplifiée:

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

Si le 3ème paramètre windowFeatures est ignoré, la case d'alerte fonctionne dans le popup dans Chrome (le popup est en fait ouvert comme un nouvel onglet dans Chrome), comme ce:

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

cela ne se produit pas dans IE7, Firefox3 ou Safari3, c'est un problème spécifique au chrome.

Voir aussi les pièces jointes pour simplifier des réductions

1
tofutim

Voici un extrait qui n'a pas besoin d'ajQuery et qui activera les alertes dans une iframe désactivée (comme sur codepen)

for (var i = 0; i < document.getElementsByTagName('iframe').length; i++) {
    document.getElementsByTagName('iframe')[i].setAttribute('sandbox','allow-modals');
}

Voici une démonstration de codepen utilisant une alerte () après ce correctif: http://codepen.io/nicholasabrams/pen/vNpoBr?editors=001

0
Alpha G33k

mettez cette ligne au bout du corps. Peut-être que le DOM n’est pas encore prêt au moment où cette ligne est lue par le compilateur.

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