Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.10.2010, 09:28
mmc mmc вне форума
Новичок на форуме
Отправить личное сообщение для mmc Посмотреть профиль Найти все сообщения от mmc
 
Регистрация: 19.10.2010
Сообщений: 2

Ошибка только в Опере
Здравствуйте!
На главной страничке сайта 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
Ответить с цитированием
  #2 (permalink)  
Старый 19.10.2010, 13:15
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Замените третью строчку на это:

e = e || window.event;
Ответить с цитированием
  #3 (permalink)  
Старый 19.10.2010, 13:21
mmc mmc вне форума
Новичок на форуме
Отправить личное сообщение для mmc Посмотреть профиль Найти все сообщения от mmc
 
Регистрация: 19.10.2010
Сообщений: 2

Стало перемещаться, но не так как должно быть. Можно сравнить с мозиллой, сейчас на сайте стоит исправленный вариант.
Ответить с цитированием
  #4 (permalink)  
Старый 19.10.2010, 18:29
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

1. document.all - устаревшее обращение IE!
заменяйте на метод document.getElementById()

2. про e = e || window.event; exec правильно сказал +window.event.srcElement - тоже исправить / дополнить

3. в IE координаты можно получить из clientX/clientY, прибавив к ним scrollLeft/scrollTop.

4. есть что-то еще лень писать
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Окно открывается только один раз altermann ExtJS 8 22.04.2010 11:55
Скрипт работает только в опере:( Angel_33_3 Javascript под браузер 10 21.12.2009 15:58
Прелоуд картинок не работает в Опере Arseo Opera, Safari и др. 3 20.11.2009 19:45
То-ли лыжи не едут, толи... возможно ошибка в коде. AzriMan Общие вопросы Javascript 19 18.05.2009 16:07
IE: неизвестная ошибка выполнения _Kpot_ Internet Explorer 1 03.04.2008 11:00