Je l'ai rencontré la question suivante dans le Safari 5.0 (pas dans tous les navigateurs basés sur WebKit), ce code:onstorage apparemment incompatibles déclenchement dans Safari
<html>
<script>
var onstorage = function(evt) {
alert([evt.key, evt.oldValue, evt.newValue].join('\n'));
}
var onclick = function(evt) {
localStorage.setItem('test', Math.random());
}
var oninit = function() {
//actually, it works the same way with old "plain event" onclick
document.querySelector('#test').addEventListener('click', onclick, false);
window.addEventListener('storage', onstorage, false);
}
</script>
<body onload="oninit()">
<input id="test" type="button" value="setting a random value"/>
</body>
déclenchera en état d'alerte, en cas, nous cliquons sur le bouton. Bien que ce code -
<html>
<script>
var onstorage = function(evt) {
alert([evt.key, evt.oldValue, evt.newValue].join('\n'));
}
var onclick = function(evt) {
localStorage.setItem('test', Math.random());
}
var oninit = function() {
window.addEventListener('storage', onstorage, false);
//actually, it works the same way with old "plain event" onclick
document.querySelector('#test').addEventListener('click', onclick, false);
}
</script>
<body onload="oninit()">
<input id="test" type="button" value="setting a random value"/>
</body>
déclenche quelques alertes, ne pas prévu. Je pense que c'est un bug, mais quelqu'un ne peut-il pas m'expliquer - pourquoi échanger seulement deux lignes de codes aboutit à un comportement si bizarre?
Dunno, 'onstorage' ne fonctionne pas pour moi. Mais en général, évitez d'appeler des variables/fonctions globales 'onstorage' ou' onclick'. Parce que 'onclick' est accessible en tant que' window.onclick', il recevra les événements click pour 'window' même sans' addEventHandler'! – bobince
bobince, idiot moi))) vous avez totalement raison - il y a quelques problèmes avec la variable onclick dans la portée globale. Néanmoins, c'est un bug, mais moins énigmatique) – shabunc
En quoi est-ce un bug lorsque vous essayez d'utiliser des noms de méthodes globaux réservés? – rxgx