Javascript.RU

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

всплывающий div содержание которого подгружается ajax'ом
при наведении на поле таблицы возле курсора должен появляться div содержание которого подгружается с помощью ajax . В IE все работает норм а в MF тупит страшно. Я только недавно начал работать с ajaxом (это первый мой скрипт с его использованием) поэтому немогу понять в чем может быть проблема

вот код :


hide=1;
def = new Array('','','','','','','','','','','','','','');
s = new Array(14);

function mc(e){
	var m = {};
	if (getNameBrouser()=="msie"){
		m.x = window.event.clientX+document.body.scrollTop;
		m.y = window.event.clientY+document.body.scrollLeft; 
	}
	else{
		m.x = e.clientX + window.scrollX;
                m.y = e.clientY + window.scrollY;
	}	
	return m;
}


function movestat(e){
	var m = mc(e);
	obj=document.getElementById('stat');
	obj.style.top=String(m.y)+'px';
	obj.style.left=String(m.x)+'px';
}

function showstat(id,e){
	if (hide == 1){
		var cx = id.substring(0,id.indexOf('-',0));
		var cy = id.substring(id.length-id.indexOf('-',0),id.length);
		var url  = '<? echo $basedir; ?>stat.php?x='+cx+'&y='+cy;
		loadHTML(url);
		
		hide=0;
	}
	movestat(e);
}


function hidestat(){
	var a = document.getElementById('stat');
	a.style.visibility = "hidden";
	hide=1;
}
function loadHTML(sURL)
{
  var request=null;
	// пытаемся создать объект для MSXML 2 и старше
  if(!request) try {
    request=new ActiveXObject('Msxml2.XMLHTTP');
  } catch (r){}

  // не вышло... попробуем для MSXML 1
  if(!request) try {
    request=new ActiveXObject('Microsoft.XMLHTTP');
  } catch (r){}

  // не вышло... попробуем для Mozilla
  if(!request) try {
    request=new XMLHttpRequest();
  } catch (r){}

  if(!request)
    // ничего не получилось...
    return "";
  // делаем запрос
	request.onreadystatechange= function (){
		if (request.readyState == 4) {
			result = request.responseXML.getElementsByTagName('sucess')[0].firstChild.data;
			if (result==1){
				a = request.responseXML.getElementsByTagName('max')[0].firstChild.data;
				for (i=0;i<a;i++){
					s[i]=request.responseXML.getElementsByTagName('id'+i)[0].firstChild.data;
				}  
			}
			else{
				s = new Array('0','0','0','0','0','0','0','0','0','0','0','0','0','0');	
			}
			for(i=0;i<s.length;i++){
				var t = document.getElementById('s'+i);
				t.innerHTML = def[i]+' '+s[i];
			}
			document.getElementById('stat').style.visibility="visible"; 
		}
	}
	request.open('GET', sURL);
	request.send(null);
}


код в каждом <td> таблицы
<a href="javascript:void(0);" onmousemove="showstat(this.parentNode.id,event);" onmouseout="hidestat();" ></a>

Последний раз редактировалось alex9425, 26.06.2009 в 20:08.
Ответить с цитированием
  #2 (permalink)  
Старый 26.06.2009, 19:31
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 26.06.2009, 20:31
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Кроме e.clientX/e.clientY есть еще e.pageX/e.pageY .
Ответить с цитированием
  #4 (permalink)  
Старый 26.06.2009, 21:25
Новичок на форуме
Отправить личное сообщение для alex9425 Посмотреть профиль Найти все сообщения от alex9425
 
Регистрация: 26.06.2009
Сообщений: 2

мне кажется проблема в функции loadHTML , в этом куске кода :

request.onreadystatechange= function (){
        if (request.readyState == 4) {
            result = request.responseXML.getElementsByTagName('sucess')[0].firstChild.data;
            if (result==1){
                a = request.responseXML.getElementsByTagName('max')[0].firstChild.data;
                for (i=0;i<a;i++){
                    s[i]=request.responseXML.getElementsByTagName('id'+i)[0].firstChild.data;
                }  
            }
            else{
                s = new Array('0','0','0','0','0','0','0','0','0','0','0','0','0','0');    
            }
            for(i=0;i<s.length;i++){
                var t = document.getElementById('s'+i);
                t.innerHTML = def[i]+' '+s[i];
            }
            document.getElementById('stat').style.visibility="visible"; 
        }
    }
    request.open('GET', sURL);
    request.send(null);
Ответить с цитированием
  #5 (permalink)  
Старый 27.06.2009, 12:18
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
а в MF тупит страшно
попробуй по системнику постучать, может поможет. А вообще поставь firebug и console.log тебе в помощь. Или отлаживай с помощью alert'а. Посмотри в консоль ошибок
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
простой show/hide для контента M.C. Элементы интерфейса 44 17.01.2009 19:29