Я работал над небольшим слайд-шоу/общедоступным дисплеем для клиента, использующего код слайд-шоу от HTML5 Rock. Я столкнулся с DOM Exception 12 — синтаксической ошибкой, которая предположительно связана с селекторами CSS — во время экспериментов с ней... но я не могу отследить ее до каких-либо изменений, которые я внес в код. Я думаю, что это может быть что-то, что было обнаружено, когда я добавлял функции.
Я проследил это до этого объекта (активная версия здесь):
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);
};
Создание экземпляра SlideShow()
(строка 521 в main.js):
var slideshow = new SlideShow(queryAll('.slide'));
Вызов queryAll('.slide')
возвращает массив всех слайдов с классом .slide
. Однако при передаче queryAll('.slide')
в качестве параметра для создания экземпляра SlideShow()
возвращается ошибка DOM Exception 12
.
Кто-нибудь видел это раньше?
addEventListener
или не поддерживают такие события, как «touchstart», «touchend» и «popstate», не любят, что вы пытаетесь их слушать. Какой браузер вы использовали кстати? - person Alex   schedule 06.09.2011