Аналог 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, время: 14:27. |