и всё таки, на счёт кроссбраузерности..
иногда меня очень расстраивает то что код, который писался под оперу, внезапно оказывается что он не работает в 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 . по сути это не должно влиять.. или что? укажите путь истинный.. |
form.elements.body
|
спасибо. палюсь конечно тем что теорией не подкован видимо... но вот ещё вопрос:
не знаю правильный ли подход, всего второй 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 |
element.onclick= ob.someAction
|
немного не поняли вопрос. сам onclick создаётся правильно, но вот по вызову этого onclick из под элемента (onclick="ob.someAction(1)") firebug говорит что ob не объявлен. "is not defined" в общем. хотя снова в опере всё работает нормально..
|
если указывать обработчик из неймспейса (объекта), то this в обработчике будет указывать не на неймспейс, как задумывалось, а на элемент.
check your code. |
объясни пожалуйста подробней для тех кто в танке..
|
укажите же что я делаю не так.
|
Часовой пояс GMT +3, время: 01:22. |