ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

js window.event не работает в IE
  #1  
Старый 16.04.2008, 13:24
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
Question js window.event не работает в IE

Сокращаю скрипт:


PHP код:
function _onload()
{
             
window.onmouseover _onmouseover;
}

function 
_onmouseover(event)
{
   
event = (event) ? event : ((window.event) ? event null);
   var 
object_id = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id null);

С таким скриптом В ИЕ даже не заходит в функцию!
Меняем window.onmouseover = _onmouseover;
на window.onmouseover = _onmouseover(window.event);

+
Isis помогал решить мне похожую проблему в
http://forum.antichat.ru/thread62540.html


Добавил изменения
PHP код:
function _onload()
{
    if (
navigator.appName !='Microsoft Internet Explorer')
             
window.onmouseover _onmouseover(window.event);
       else
              
window.onmouseover _onmouseover;
}

function 
_onmouseover(event)
{
    
    if (
navigator.appName !='Microsoft Internet Explorer')
    {
        
event = (event) ? event : ((window.event) ? event null);
        var 
object_id = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id null);        
    }
    else
    {    
      var 
target null;
      if (
window.event)
      {
          
event window.event;
          
target event.srcElement;
      }
      else
      {
           
event null;
           
target event.target;
      }
     
      var 
object_id = (target) ? target.id null;
   }

после изменений: в функцию заходит, но target is null

в Mozilla же все работает...
Вот такой вот вопрос

Последний раз редактировалось Naydav; 16.04.2008 в 13:41..
 
Ответить с цитированием

  #2  
Старый 16.04.2008, 14:44
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Код несколько неверный, но это не важно. Обрати внимание на эту строку:
Код:
window.onmouseover = _onmouseover(window.event);
Важно понять, что происходит. Здесь свойству onmouseover объекта window присваивается значение, которое возвращает функция _onmouseover при запуске с параметром window.event. В данном случае возвращается void undefined. И это происходит только один раз.
 
Ответить с цитированием

  #3  
Старый 16.04.2008, 14:56
Аватар для Isis
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме:
16641028

Репутация: 2371


По умолчанию

PHP код:
function getEventTarget(e) {
    var 
|| window.event;
    var 
targ e.target || e.srcElement;
    if (
targ.nodeType == 3) { // боремся с Safari
    
targ targ.parentNode;
    }
    return 
targ;

 
Ответить с цитированием

  #4  
Старый 18.04.2008, 19:54
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

А можно подробнее плз
то есть нужно..

PHP код:
function _onmouseover(event) {
    
        
//event = (event) ? event : ((window.event) ? event : null);
        //var object_id = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id : null);        

    

    
   
var object_id getEventTarget(event);
    
alert(object_id); 

 
Ответить с цитированием

  #5  
Старый 18.04.2008, 20:07
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Цитата:
Обрати внимание на эту строку:
Код:
window.onmouseover = _onmouseover(window.event);
Код не мой, я вообще изначально бы по другому делал...

PHP код:
function _onload() {
    
window.onscroll     _onscroll;
    
window.onmouseover  _ onmouseover;
    
window.onmouseout   _onmouseout;

В Мазилле при движении мыши вызывються _onmouseover и _onmouseout, но в ИЕ это не работает...
Если верхний мой вариант не правильный
PHP код:
window.onmouseover _ onmouseover(); 
то как поступить?

Последний раз редактировалось Naydav; 18.04.2008 в 20:10..
 
Ответить с цитированием

  #6  
Старый 18.04.2008, 20:51
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Цитата:
то как поступить?
А какова задача?
 
Ответить с цитированием

  #7  
Старый 18.04.2008, 20:53
Аватар для Дюша
Дюша
Banned
Регистрация: 09.12.2007
Сообщений: 301
Провел на форуме:
1796349

Репутация: 174
По умолчанию

Цитата:
то как поступить?
забить на ie и в премичании написать юзать FF
 
Ответить с цитированием

  #8  
Старый 18.04.2008, 20:53
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Цитата:
А какова задача?
var object_id = (target) ? target.id : null;

получить объект object_id
 
Ответить с цитированием

  #9  
Старый 18.04.2008, 21:05
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Тема не актуальна, я переделал саму логику...
Просто интересно знать на будущее где в коде нужно применять функцию
getEventTarget()
 
Ответить с цитированием

  #10  
Старый 18.04.2008, 23:06
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Пример:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html>
<head>
<title>Пример.</title>

<style type="text/css">

#dummy
{
  border: #AAA solid 1px;
  background: #EEE;
  width: 200px;
  height: 150px;
}

</style>

<script type="text/javascript">

var colors = ['#7E7', '#ADF', '#FA0', '#AAF', '#EEE'];

function addEvent(o, e, f)
{
  if(o.addEventListener)
  {
    o.addEventListener(e, f, false);
  }
  else if(o.attachEvent)
  {
    o.attachEvent('on' + e, f);
  }
};

addEvent(window, 'load', function()
{
  var node = document.getElementById('dummy');

  /*
    В Mozilla ссылка на объект event передаётся параметром в функцию-обработчик.
    В IE существует глобальный объект window.event
    Opera великодушно поддерживает и то, и другое.
  */

  addEvent(node, 'mouseover', function(e)
  {
    // если "e" не определено - используем window.event:
 
    e = e || window.event;

    // Аналогично:
    var t = e.target || e.srcElement;

    // Делаем что-нибудь:
    colors.push(t.style.backgroundColor = colors.shift());
  });
});

</script>

</head>
<body>

<div id="dummy"></div>

</body>
</html>
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Mozilla работает над Firefox 4 Phm.phx Мировые новости 6 02.04.2008 01:08
почему не работает база асек?http://icq.antichat.net/ Nilamop Болталка 10 08.02.2008 23:29
Спутниковый тюнер НЕ работает .:( B1t.exe Электроника и Фрикинг 18 18.01.2008 13:43
Написал свою первую игру месяца 2 назад. Добавил массивы недавно. Теперь не работает Metall С/С++, C#, Delphi, .NET, Asm 5 17.01.2008 02:26
как работает кликател!? silveran Сотовый фрикинг 0 27.07.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ