Event на динамические объекты + кроссбраузерность?
От: marx paul Германия Провести онлайн-опрос
Дата: 05.03.04 15:30
Оценка:
Господа!
Не могу понять, почему в мозиле не работает следующая конструкция:

<script>
tr.cells[2].innerHTML = '<div onclick="alert();">myText</div>';
</script>



Точнее не работает onclick на вставленном элементе. (сам элемент, слава Богу, отображается).

Пробовал сделать так:


<script>
Function myFunc(){alert();}

tr.cells[2].innerHTML = '<div id="myID" onclick="alert();">myText</div>';
document.getElementById('myID').attachEvent('onclick', myFunc)

</script>


document.getElementById('myID').onclick=function (){alert();} тоже не помогает.


Вопрос: в чем дело? Как все же заставить onclick работать в Mozilla?

Заранее всем благодарен!



ЗЫ: в ИЕ и опере все методы работают
Провести онлайн-опрос
Online-Umfrage erstellen
Re: Event на динамические объекты + кроссбраузерность?
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 05.03.04 15:42
Оценка:
Здравствуйте, marx paul, Вы писали:

MP>Господа!

MP>Не могу понять, почему в мозиле не работает следующая конструкция:

MP>
MP><script>
MP>tr.cells[2].innerHTML = '<div onclick="alert();">myText</div>';
MP></script>
MP>



MP>Точнее не работает onclick на вставленном элементе. (сам элемент, слава Богу, отображается).

Сами разработчики, когда я им запостил подобный баг (не подхватываются события на елементы, которые добавляются динамически) ответили, что все работает. Попробуй запостить этот баг им. Может хоть сейчас исправят. (Собственно, именно по-этому дерева на этом сайте не работает в Мазилле).
King Oleg
*Читайте DOC'и, они rules*
Re[2]: Event на динамические объекты + кроссбраузерность?
От: marx paul Германия Провести онлайн-опрос
Дата: 05.03.04 19:29
Оценка:
Здравствуйте, King Oleg, Вы писали:

KO>Сами разработчики, когда я им запостил подобный баг (не подхватываются события на елементы, которые добавляются динамически) ответили, что все работает. Попробуй запостить этот баг им. Может хоть сейчас исправят. (Собственно, именно по-этому дерева на этом сайте не работает в Мазилле).



Да дерево rsdn в мазилле, слава Богу, работает. (по крайней мере у меня на v.1.3).
Но вот та же самая мазила не хочет корректно выполнять код, запостенный мною выше.


Если все-таки кто-то зеает выход — очень прошу!!!

Тем временем, попробую разобраться, как проблему порешили на Rsdn.

ЗЫ: Кстати, куда писать разработчикам?
Провести онлайн-опрос
Online-Umfrage erstellen
Re[3]: Event на динамические объекты + кроссбраузерность?
От: marx paul Германия Провести онлайн-опрос
Дата: 05.03.04 19:43
Оценка:
вот сейчас написал, что дерево rsdn работает в мазилле — поспешил.
Работает, но не все и не всегда

странно то, что вот это работает и событие прекрасно отрабатывается...
ul.innerHTML = "<DIV onclick='cancelLoad(" + node + ");' class='loadMsg'>zagruzka, pozhalujsta podozhdite<DIV>";

(изъято из toc.js на rsdn)

в то время, как мое нет:
tr.cells[2].innerHTML = '<div onclick="alert();">myText</div>';


Не пойму, кто здесь гонит — я или Mozilla

что делать-то?
Провести онлайн-опрос
Online-Umfrage erstellen
Re[4]: Event на динамические объекты + кроссбраузерность?
От: fryky Россия  
Дата: 09.03.04 07:58
Оценка:
Здравствуйте, marx paul, Вы писали:

MP>
MP>ul.innerHTML = "<DIV onclick='cancelLoad(" + node + ");' class='loadMsg'>zagruzka, pozhalujsta podozhdite<DIV>";
MP>


MP>
MP>tr.cells[2].innerHTML = '<div onclick="alert();">myText</div>';
MP>



может попробовать поменять ковычки местами ?
Re[5]: Event на динамические объекты + кроссбраузерность?
От: Аноним  
Дата: 09.03.04 08:13
Оценка:
Здравствуйте, fryky, Вы писали:

F>Здравствуйте, marx paul, Вы писали:


MP>>
MP>>ul.innerHTML = "<DIV onclick='cancelLoad(" + node + ");' class='loadMsg'>zagruzka, pozhalujsta podozhdite<DIV>";
MP>>


MP>>
MP>>tr.cells[2].innerHTML = '<div onclick="alert();">myText</div>';
MP>>



F>может попробовать поменять ковычки местами ?

Не не надо ... В Мозилле не работают пустые алерты ... Запихни в алерт какую-нить строку, тогда у тебя алерт этот сработает ...
Re[5]: Event на динамические объекты + кроссбраузерность?
От: anonymous Россия http://denis.ibaev.name/
Дата: 09.03.04 08:26
Оценка: +1
Здравствуйте, fryky, Вы писали:

F>может попробовать поменять ковычки местами ?


а может все же DOM начать правильно использовать?... функции alert обязательно должен передаваться параметр (причина именно в этом)... и если уж на то пошло вызывать нужно window.alert()...

tr.cells[2].innerHTML = '<div onclick="window.alert(\'thisIsAlert\');">myText</div>';
Re[4]: Event на динамические объекты + кроссбраузерность?
От: andik  
Дата: 09.03.04 08:28
Оценка:
Здравствуйте, marx paul, Вы писали:

MP>вот сейчас написал, что дерево rsdn работает в мазилле — поспешил.

MP>Работает, но не все и не всегда

MP>странно то, что вот это работает и событие прекрасно отрабатывается...

MP>
MP>ul.innerHTML = "<DIV onclick='cancelLoad(" + node + ");' class='loadMsg'>zagruzka, pozhalujsta podozhdite<DIV>";
MP>

MP>(изъято из toc.js на rsdn)

MP>в то время, как мое нет:

MP>
MP>tr.cells[2].innerHTML = '<div onclick="alert();">myText</div>';
MP>


да работает тут все.
Если ты почитаешь внимательно ошибку

Error: uncaught exception: [Exception... "Not enough arguments [nsIDOMWindowInternal.alert]" nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)" location: "JS frame :: <unknown filename> :: onclick :: line 0" data: no]

то увидешь, что в функция alert() требует аргумент

такой, например, код работает
tr.cells[2].innerHTML = '<div onclick="alert(\'\');">myText</div>';


MP>Не пойму, кто здесь гонит — я или Mozilla

почему так?
... << RSDN@Home 1.1.3 beta 1 >>
Re[6]: Event на динамические объекты + кроссбраузерность?
От: andik  
Дата: 09.03.04 08:39
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Здравствуйте, fryky, Вы писали:


F>>может попробовать поменять ковычки местами ?


A>а может все же DOM начать правильно использовать?... функции alert обязательно должен передаваться параметр (причина именно в этом)... и если уж на то пошло вызывать нужно window.alert()...


Согласен
Иследования показали MS и NS по разномуу трактуют алерт
MS

Syntax
window.alert( [sMessage])
Parameters

sMessage Optional. String that specifies the message to display in the dialog box.

NS

Syntax
window.alert(text)

... << RSDN@Home 1.1.3 beta 1 >>
Re[5]: Уточнение
От: marx paul Германия Провести онлайн-опрос
Дата: 09.03.04 08:41
Оценка:
Большое спасибо всем за то, поднапряглись!

Однако размышления погли не совсем туда, куда надо:
alert() на onclick'e я привел просто так.
На самом деле у меня там вызывается функция и критичный кусток кодва выглядит, грубо говоря, так:

obj.innerHTML = '<div onclick="AbortLoading(this)">&nbsp;Loading... please wait.</div>';

function AbortLoading(obj){
var obj;
obj.parentElement.innerHTML = '';
return true;
}

Для тех, кто в этот раз захочет искать ошибку в том, что мозила "this", как аргумент не воспринимает — сразу скажу — агрумент другого типа в этой же задаче она тоже не схавала. и вообще, AbortLoading не вызывается под мазилой совсем!!! как не вылазит и контент из iframe'a (но это уже другой разгоаор).

Я бы и сам на себя грешил бы, если бы тот же самый код не хавали ИЕ, опера и сафари.
Таки код не работает ТОЛЬКО в мазиле или она у меня левая какая-нить?

Словом, кто знает почему — в студию!

Заранее ооооооччччень признателен!
Провести онлайн-опрос
Online-Umfrage erstellen
Re[6]: Уточнение
От: andik  
Дата: 09.03.04 08:54
Оценка: 8 (1)
Здравствуйте, marx paul, Вы писали:

MP>Большое спасибо всем за то, поднапряглись!


MP>Однако размышления погли не совсем туда, куда надо:

MP>alert() на onclick'e я привел просто так.
MP>На самом деле у меня там вызывается функция и критичный кусток кодва выглядит, грубо говоря, так:

MP>obj.innerHTML = '<div onclick="AbortLoading(this)">&nbsp;Loading... please wait.</div>';


нет там parentElement

function AbortLoading(obj){
obj.parentNode.innerHTML = '';
return true;
}


MP>Заранее ооооооччччень признателен!
... << RSDN@Home 1.1.3 beta 1 >>
Re[7]: Уточнение
От: marx paul Германия Провести онлайн-опрос
Дата: 09.03.04 09:04
Оценка:
Здравствуйте, andik,

ооооооччччень признателен!

а что там вместо previousSibling, nextSibling, cells и item?
Провести онлайн-опрос
Online-Umfrage erstellen
Re[8]: Уточнение
От: andik  
Дата: 09.03.04 09:12
Оценка:
Здравствуйте, marx paul, Вы писали:

MP>а что там вместо previousSibling, nextSibling, cells и item?


здесь обо всем читаем
... << RSDN@Home 1.1.3 beta 1 >>
Re[6]: Уточнение
От: raven377  
Дата: 09.03.04 10:19
Оценка:
Здравствуйте, marx paul, Вы писали:

MP>Большое спасибо всем за то, поднапряглись!


MP>Однако размышления погли не совсем туда, куда надо:

MP>alert() на onclick'e я привел просто так.
MP>На самом деле у меня там вызывается функция и критичный кусток кодва выглядит, грубо говоря, так:

MP>obj.innerHTML = '<div onclick="AbortLoading(this)">&nbsp;Loading... please wait.</div>';


MP>function AbortLoading(obj){

MP> var obj;
MP> obj.parentElement.innerHTML = '';
MP> return true;
MP>}

MP>Для тех, кто в этот раз захочет искать ошибку в том, что мозила "this", как аргумент не воспринимает — сразу скажу — агрумент другого типа в этой же задаче она тоже не схавала. и вообще, AbortLoading не вызывается под мазилой совсем!!! как не вылазит и контент из iframe'a (но это уже другой разгоаор).


MP>Я бы и сам на себя грешил бы, если бы тот же самый код не хавали ИЕ, опера и сафари.

MP>Таки код не работает ТОЛЬКО в мазиле или она у меня левая какая-нить?

MP>Словом, кто знает почему — в студию!


MP>Заранее ооооооччччень признателен!

Кста про Мозиллу, ключевое слово this работает, так что код можешь не менять. Про ДОМ мозилевский это нужно читать, чего и как. Хороший кроссбраузерный солюшн можно строить вот на такой схеме http://www.dhtmlcentral.com. Там есть раздел Library ... там файлик зазипованный, скачай его и внимательно просмотри. Очень здорово написано, очень удобно пользоваться таким "АПИ". И вообще прототипы это круто!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.