SYNTAX_ERR: DOM Exception De 12 Hmmm
Je travaille sur un petit diaporama /affichage public pour un client qui utilise HTML5 Rock Diaporama code. J'ai couru dans un DOM à l'Exception de 12 une erreur de syntaxe qui est censé être liées à des sélecteurs CSS - tout monkeying autour avec elle... mais je ne peux pas le faire remonter à toutes les modifications que j'ai apportées dans le code. Je pense qu'il pourrait être quelque chose qui a été découvert que j'ai ajouté des fonctionnalités.
J'ai fait remonter jusqu'à cet objet (version live ici):
var SlideShow = function(slides) {
this._slides = (slides || []).map(function(el, idx) {
return new Slide(el, idx);
});
var h = window.location.hash;
try {
this.current = h;
} catch (e) { /* squeltch */ }
this.current = (!this.current) ? "landing-slide" : this.current.replace('#', '');
if (!query('#' + this.current)) {
//if this happens is very likely that someone is coming from
//a link with the old permalink format, i.e. #slide24
alert('The format of the permalinks have recently changed. If you are coming ' +
'here from an old external link it\'s very likely you will land to the wrong slide');
this.current = "landing-slide";
}
var _t = this;
doc.addEventListener('keydown',
function(e) { _t.handleKeys(e); }, false);
doc.addEventListener('touchstart',
function(e) { _t.handleTouchStart(e); }, false);
doc.addEventListener('touchend',
function(e) { _t.handleTouchEnd(e); }, false);
window.addEventListener('popstate',
function(e) { if (e.state) { _t.go(e.state, true); } }, false);
};
Instanciation de SlideShow()
(ligne 521 dans main.js):
var slideshow = new SlideShow(queryAll('.slide'));
Appel queryAll('.slide')
retourne un tableau de toutes les diapositives avec une classe de .slide
. Cependant, lors du passage de queryAll('.slide')
en tant que paramètre de l'instanciation de SlideShow()
, il renvoie une DOM Exception 12
erreur.
Personne n'a vu cela auparavant?
- Êtes-vous sûr qu'il renvoie un tableau, ou cela pourrait-il revenir un liste de noeud?
- DOM Exception 12 est une erreur de syntaxe, par exemple, une propriété a été mis-ensemble. Ma conjecture est qu'il est de votre écouteurs d'événement - la loi de mise, ce qui est. Je pense que les navigateurs qui ne supportent pas le
addEventListener
entièrement ou qui ne supportent pas les événements comme des 'évènements touchstart', 'touchend", et "popstate" vous n'aimez pas que vous essayez de les écouter. Quel navigateur tu utilises btw?
Vous devez vous connecter pour publier un commentaire.
Vous êtes à l'utilisation illégale de id-attributs(illégale avant HTML5) à l'intérieur du document, par exemple
2-slide
. Les corriger.Pour expliquer:
pour résoudre le connu des débordements de
element.querySelectorAll()
le sélecteur.slide
sera réécrit en interne(à l'aide de l'id de l'élément). Il en résultera quelque chose comme ça:...et les forces de l'erreur, car un ID ne peut pas commencer par un chiffre.
Voir le violon: http://jsfiddle.net/doktormolle/FGWhk/
Si vous venez ici après une recherche pour cette erreur en HTML5 rocks diapositives:
Pour une raison quelconque, ils supprimer la catégorie "à construire" avec les éléments suivants:
Qui brise tous les diaporamas de l'utilisation de construire, même Google démo dès maintenant est cassé
Il suffit de changer la ligne 220 de default.js à
tout est bien!
Dans mon cas, c'était à l'aide de l'auto.postMessage(e.données); dans le thread principal lors de l'utilisation des web workers.
Je sais c'est pas liée à l'OP de la question, mais c'est une étrange erreur donc je vais la laisser ici dans l'espoir qu'il aide les autres.
Même problème pour moi, mais dans mon cas, d'essayer d'obtenir des éléments de leur attribut
et SYNTAX_ERR: DOM Exception 12 a eu lieu uniquement sur Safari. Donc j'ai changer pour obtenir l'élément directement à partir de la classe et maintenant fonctionner correctement.
Vous pouvez échapper les guillemets comme dans applescript alors pas de problème sur safari