Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   и всё таки, на счёт кроссбраузерности.. (https://javascript.ru/forum/events/22339-i-vsjo-taki-na-schjot-krossbrauzernosti.html)

trololo 15.10.2011 18:29

и всё таки, на счёт кроссбраузерности..
 
иногда меня очень расстраивает то что код, который писался под оперу, внезапно оказывается что он не работает в firefox и ему подобным.

if(document.getElementsByTagName('form').length>0)
        {
            if(document.getElementsByTagName('form')[0].body!==undefined) 
            {
                document.getElementById('someId').setAttribute('onclick','someAction()');
            }
        }

к примеру тут из DOM нужно получить textarea первой попавшейся формы. если на форме и есть textarea, то name у неё точно должен быть body. в опере это работает. в firefox не работает и даже нет никаких ошибок (что особенно бесит)
if(document.getElementsByTagName('form')[0].body)
работает только если скрипт ниже всего html дерева. у меня же userscript который вызывается по window.onload . по сути это не должно влиять.. или что? укажите путь истинный..

tenshi 15.10.2011 19:21

form.elements.body

trololo 16.10.2011 01:51

спасибо. палюсь конечно тем что теорией не подкован видимо... но вот ещё вопрос:
не знаю правильный ли подход, всего второй userjs пишу, есть некий объект (или хз как это в js правильно называется, уж простите)
var ob={
ctor:function()
{
//some start actions
},
someAction:function(param p)
{
//some action
},
anotherAction:function()
{
//here is must be code from first message...
document.getElementById('someId').setAttribute('onclick','ob.someAction(1)');
},
/*few methods and vars
....
*/
}

window.load=ob.ctor();

тоесть вешаем некую функцию из этого же "объекта" на нужный элемент. в опере такое прокатывает. в ff firebug говорит "ob is not defined
onclick()"

ида, опера 11.00 ff 7.0.1

tenshi 16.10.2011 02:33

element.onclick= ob.someAction

trololo 16.10.2011 02:53

немного не поняли вопрос. сам onclick создаётся правильно, но вот по вызову этого onclick из под элемента (onclick="ob.someAction(1)") firebug говорит что ob не объявлен. "is not defined" в общем. хотя снова в опере всё работает нормально..

melky 16.10.2011 14:18

если указывать обработчик из неймспейса (объекта), то this в обработчике будет указывать не на неймспейс, как задумывалось, а на элемент.

check your code.

trololo 16.10.2011 20:23

объясни пожалуйста подробней для тех кто в танке..

trololo 17.10.2011 20:28

укажите же что я делаю не так.


Часовой пояс GMT +3, время: 01:22.