Ошибка только в Опере
Здравствуйте!
На главной страничке сайта krasich.ru есть "Задачка" шахматная. Во всех браузерах фигуры перетаскиваются мышкой, а в опере - нет. Ошибку выдаёт следующую: Uncaught exception: TypeError: Cannot convert 'e' to object Error thrown at line 4487, column 3 in <anonymous function: __moveDraggedPiece>(e): this.pieces[this.dragProperties.color][this.dragProperties.pieceIndex].el.style.left = (e.clientX - this.dragProperties.mouseX + this.dragProperties.pieceX) + 'px'; called from line 4959, column 119 in <anonymous function: __addGeneralEvents>(e): D_chessObjects[ind].__moveDraggedPiece(e); called via Function.prototype.apply() from line 5249, column 5 in <anonymous function>(): fn.apply(window.event.srcElement); Ошибка указывает как я понял на вот эту функцию: __moveDraggedPiece : function(e) { if(document.all)e = event; if(this.dragCountDownVar==5){ // Drag is in progress this.pieces[this.dragProperties.color][this.dragProperties.pieceIndex].el.style.left = (e.clientX - this.dragProperties.mouseX + this.dragProperties.pieceX) + 'px'; this.pieces[this.dragProperties.color][this.dragProperties.pieceIndex].el.style.top = (e.clientY - this.dragProperties.mouseY + this.dragProperties.pieceY) + 'px'; } if(this.dragDropProperties.active) { var obj = document.getElementById(this.dragDropProperties.id); obj.style.left = e.clientX - this.dragDropProperties.mouse.x + this.dragDropProperties.el.x; obj.style.top = e.clientY - this.dragDropProperties.mouse.y + this.dragDropProperties.el.y; } } Помогите пожалуйста, не разбираюсь в JS |
Замените третью строчку на это:
e = e || window.event; |
Стало перемещаться, но не так как должно быть. Можно сравнить с мозиллой, сейчас на сайте стоит исправленный вариант.
|
1. document.all - устаревшее обращение IE!
заменяйте на метод document.getElementById() 2. про e = e || window.event; exec правильно сказал +window.event.srcElement - тоже исправить / дополнить 3. в IE координаты можно получить из clientX/clientY, прибавив к ним scrollLeft/scrollTop. 4. есть что-то еще лень писать |
Часовой пояс GMT +3, время: 23:08. |