Аналог document.all
Добрый день!)
Столкнулась с проблемой: если использовать
if (document.all) {}
то данный код работает только в IE. Нашла такой код:
if (!document.all) { //для работы в других браузерах
document.constructor.prototype.__defineGetter__('all', function() { return document.getElementsByTagName('*'); } );
}
Данный код помог для браузера Opera Но для FireFox он почему-то не работает...Как быть? Мне нужно чтобы и в IE и в Opera и в FireFox работало...Особенно FireFox! |
if ( !document.all ) {
if ( Object.defineProperty ) {
Object.defineProperty( document, "all", {
get: function() {
return document.getElementsByTagName('*');
}
});
} else if ( Object.prototype.__defineGetter__ ) {
Object.prototype.__defineGetter__.call( document, 'all', function() {
return document.getElementsByTagName('*');
});
} else {
document.all = document.getElementsByTagName('*');
}
}
|
Ваш код работает так же как и мой...но, скорее всего, это моя ошибка.
Я заметила, что если написать так
if (document.getElementsByTagName('*')) {alert(document.getElementsByTagName('*'));}
то FireFox возвращает [object HTMLCollection] то есть, на сколько я понимаю, то все работае.. и значит проблема в коде кот. содержится внутри?
if (document.getElementsByTagName('*')) {//IE
alert(document.getElementsByTagName('*'));
if (event.srcElement.tagName == 'IMG' && event.srcElement.name=='mapimage'){
pixelX = event.offsetX + originalLeft;
pixelY = event.offsetY + originalTop;
over(event.offsetX,event.offsetY);
if ( flgfencing ) {
drawFence (x1,y1,pixelX , pixelY );
}
}
else
return false;
}
может я чего использую чего в FF нету? |
Sveta,
srcElement только в IE, Opera, а в хроме и мозилле это target:
var target = event.srcElement || event.target;
if (target.tagName == 'IMG' && target.name=='mapimage'){
.....
|
Dim@,
Спасибо)) только чтобы заработало я еще чуть код подправила:
evt = (evt) ? evt : ((window.event) ? window.event : null);
if(evt) {
var target = (evt.target) ? evt.target : event.srcElement;
if (target.tagName == 'IMG' && target.name=='mapimage')
{
alert('sdf');
pixelX = event.offsetX + originalLeft;
pixelY = event.offsetY + originalTop;
over(event.offsetX,event.offsetY);
if ( flgfencing ) {
drawFence (x1,y1,pixelX , pixelY );
}
}
}
В итоге alert('sdf'); вызывается во всех браузерах..но в FF дальнейший код не работает...неужели еще что-то использую, что FF не поддерживает? сижу разбираюсь... |
Чтож, все разрешилось.
Рабочий код выглядит так:
if (document.all){ //IE
if (event.srcElement.tagName == 'IMG' && event.srcElement.name=='mapimage')
{
pixelX = event.offsetX + originalLeft;
pixelY = event.offsetY + originalTop;
over(event.offsetX,event.offsetY);
if ( flgfencing ) {
drawFence (x1,y1,pixelX , pixelY );
}
}
else
return false;
}
//=========================================================
else if (document.getElementById) { //for FF and Opera
if (evt.target.tagName =='IMG'&& evt.target.name == 'mapimage') {
pixelX = evt.pageX - originalLeft;
pixelY = evt.pageY - originalTop;
over(evt.pageX,evt.pageY);
if ( flgfencing ){
drawFence (x1,y1, evt.pageX , evt.pageY );
}
}
else return false;
}
Может кому пригодится!:thanks: |
| Часовой пояс GMT +3, время: 04:07. |