SYNTAX_ERR:DOMexception12 – 嗯

我一直在为使用HTML5 Rock的幻灯片代码的客户端devise一个小型幻灯片/公共显示器。 我遇到了一个DOM Exception 12 – 一个与CSSselect器有关的语法错误 – 当我用它来瞎猜…但我无法追溯到我在代码中做出的任何更改。 我想这可能是因为我添加了function而被发现的东西。

我已经追溯到这个对象(现场版本):

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, ie #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); }; 

SlideShow()实例化SlideShow() main.js中的第521 行 ):

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

调用queryAll('.slide')将返回一个包含.slide类的所有幻灯片的.slide 。 但是,当传递queryAll('.slide')作为实例化SlideShow()的参数时,它将返回一个DOM Exception 12错误。

有没有人看过这个?

您正在文档中使用非法的id属性(在HTML5之前是非法的),例如2-slide 。 修复它们。

解释:为了解决element.querySelectorAll()已知错误行为 ,select器.slide将在内部重写(使用元素的id)。 这将导致这样的事情:

 #2-slide .moreselectors 

…强制错误,因为ID不能以数字开头。

看小提琴: http : //jsfiddle.net/doktormolle/FGWhk/

如果您在HTML5幻灯片中search这个错误后来到这里:

出于某种原因,他们用下面的方法去除了“构build”类:

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

这打破了所有幻灯片的使用构build,即使是谷歌演示现在是打破

只需将default.js的220行更改为

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

一切都很好!

在我的情况下,它使用self.postMessage(e.data); 在使用networking工作者的主线程中。

我知道这与OP的问题没有关系,但是这是一个奇怪的错误,所以我希望它能帮助别人。

同样的问题,但在我的情况下,尝试从属性中获取元素

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

和SYNTAX_ERR:DOMexception12只发生在Safari上。 所以我改变它直接从类获得元素,现在工作正常。