Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
js window.event не работает в IE |

16.04.2008, 13:24
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме: 849583
Репутация:
210
|
|
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..
|
|
|

16.04.2008, 14:44
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
Код несколько неверный, но это не важно. Обрати внимание на эту строку:
Код:
window.onmouseover = _onmouseover(window.event);
Важно понять, что происходит. Здесь свойству onmouseover объекта window присваивается значение, которое возвращает функция _onmouseover при запуске с параметром window.event. В данном случае возвращается void undefined. И это происходит только один раз.
|
|
|

16.04.2008, 14:56
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
PHP код:
function getEventTarget(e) {
var e = e || window.event;
var targ = e.target || e.srcElement;
if (targ.nodeType == 3) { // боремся с Safari
targ = targ.parentNode;
}
return targ;
}
|
|
|

18.04.2008, 19:54
|
|
Постоянный
Регистрация: 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);
}
|
|
|

18.04.2008, 20:07
|
|
Постоянный
Регистрация: 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..
|
|
|

18.04.2008, 20:51
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
|
|
|

18.04.2008, 20:53
|
|
Banned
Регистрация: 09.12.2007
Сообщений: 301
Провел на форуме: 1796349
Репутация:
174
|
|
забить на ie и в премичании написать юзать FF
|
|
|

18.04.2008, 20:53
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме: 849583
Репутация:
210
|
|
var object_id = (target) ? target.id : null;
получить объект object_id
|
|
|

18.04.2008, 21:05
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме: 849583
Репутация:
210
|
|
Тема не актуальна, я переделал саму логику...
Просто интересно знать на будущее где в коде нужно применять функцию
getEventTarget()
|
|
|

18.04.2008, 23:06
|
|
Постоянный
Регистрация: 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>
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|