javascript html5 dom syntax-error domexception

javascript - SYNTAX_ERR: DOM Exception 12-Hmmm



html5 syntax-error (5)

He estado trabajando en una presentación de diapositivas / pública pequeña para un cliente que usa el código de presentación de diapositivas de HTML5 Rock. Me encontré con una DOM Exception 12, un error de sintaxis que supuestamente está relacionado con los selectores de CSS, mientras jugueteaba con ella ... pero no puedo rastrearla a los cambios que hice en el código. Estoy pensando que podría ser algo que se descubrió cuando agregué características.

Lo he rastreado hasta este objeto (versión en vivo here ):

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); };

Instanciación de SlideShow() (línea 521 en main.js ):

var slideshow = new SlideShow(queryAll(''.slide''));

Calling queryAll(''.slide'') devuelve una matriz de todas las diapositivas con una clase de .slide . Sin embargo, al pasar queryAll(''.slide'') como parámetro para instanciar SlideShow() , devuelve un error DOM Exception 12 .

Alguien ha visto esto antes?


En mi caso, usaba self.postMessage (e.data); en el hilo principal mientras usa trabajadores web.

Sé que no está relacionado con el problema del OP, pero es un error extraño, así que lo dejo aquí con la esperanza de que ayude a otros.


Está utilizando atributos de id ilegales (ilegales antes de HTML5) dentro del documento, por ejemplo, 2-slide . Arreglalos.

Explicar: para resolver la mala conducta conocida de element.querySelectorAll() el selector .slide se reescribirá internamente (mediante el uso del id del elemento). Esto dará como resultado algo así:

#2-slide .moreselectors

... y fuerza el error, porque un ID no puede comenzar con un Número.

Vea el violín: http://jsfiddle.net/doktormolle/FGWhk/


Mismo problema para mí, pero en mi caso, intento obtener elementos de su atributo

document.querySelectorAll(''input[name="path"]'')

y SYNTAX_ERR: DOM Exception 12 ocurrió solo en Safari. Así que lo cambié para obtener el elemento directamente de la clase y ahora funciona bien.


Puede escapar de las citas como en applescript entonces no hay problema en safari

do JavaScript "document.querySelector(''span[" & attrName & "=/"" & attrValue & "/"]'').click();"


Si vienes aquí después de buscar este error en HTML5 rocks slides:

Por alguna razón, eliminan la clase ''a-compilar'' con lo siguiente:

toBuild[0].classList.remove(''to-build'', '''');

Eso rompe todas las cubiertas de diapositivas que usa la compilación, incluso la demo de Google ahora está rota

Simplemente cambie la línea 220 de default.js a

toBuild[0].classList.remove(''to-build'');

¡todo está bien!