Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как переназначить onClick в IE


Автор: shurup_312 5.3.2008, 14:31
Постоянно хожу за ответами на винград и тут снова вопрос возник.
Хочу переназначить кнопке onClick.
вот так работает везде кроме IE
Код

var baton=window.opener.document.getElementById('att_button');
baton.setAttribute('onclick','deattach()');


а вот так почему то вообще не работает нигде, хотя странно...

Код

var baton=window.opener.document.getElementById('att_button');
baton.onclick='deattach()';


Я все думаю что это из за того, что не в этом же окне сама кнопка, хотя по моему никак это влиять не должно.
Ну да и ладно бы первым способом устанавливал, так не работает и он в IE.
Кто сталкивался, почему может не работать? Остальные браузеры - это Опера, FF и Сафари. 

Автор: SelenIT 5.3.2008, 14:42
Цитата(shurup_312 @  5.3.2008,  14:31 Найти цитируемый пост)
вот так работает везде кроме IE

Потому что IE по-своему соотносит http://xpoint.ru/know-how/JavaScript/Atributyi?8.

Цитата(shurup_312 @  5.3.2008,  14:31 Найти цитируемый пост)
а вот так почему то вообще не работает нигде

Потому что свойство onclick должно быть функцией, а не строкой.

Автор: shurup_312 5.3.2008, 15:13
Цитата(SelenIT @ 5.3.2008,  14:42)
Потому что свойство onclick должно быть функцией, а не строкой.

а если в IE делать 
baton.onclick, то как ему присвоить функцию в данном случае?

Добавлено через 10 минут и 55 секунд
спаибо безусловно за ссылку, потому что теперь буду больше понимать некоторые вещи, но в данном случае IE так и не поменял ему обработчик onclick, хотя я ему согласно инструкции попытался сделать так
Код

var baton=window.opener.document.getElementById('att_button');
baton.setAttribute('onclick',function() {deattach());

Автор: SelenIT 5.3.2008, 15:32
Цитата(shurup_312 @  5.3.2008,  15:13 Найти цитируемый пост)
ему согласно инструкции попытался сделать так

Как раз про это инструкция говорит, что так делать не надо smile

Все гораздо проще:
Код

baton.onclick=deattach; // просто имя ф-ции, без скобок! Вот если б надо было передать параметр - тогда сложнее...

Автор: shurup_312 5.3.2008, 15:45
В общем как выяснилось часть проблемы была в том, что изменнение функции происходит из другого окна, я в документ окна, из которого происходит изменение обработчика, так же внес пусть до внешнего файла со скриптами (надеюсь не сильно сумбурно smile) Кароч теперь вот на такой код

Код

var baton=window.opener.document.getElementById('att_button');
alert(baton.onclick);
baton.onclick=deattach;
alert(baton.onclick);


По первому алерту выводит 
function anonymous ()
{
upload_pict()
}

Что в приницпе понятно после того, что я прочитал, на втором алерте выдает что функция новая, та которая нужна, но...
Но вот он ее так и не выполняет после повторного нажатия...

Автор: SelenIT 5.3.2008, 15:56
Ага, я недосмотрел, что тут два окна и ф-ция deattach() определена в открывающем, так? Тогда
Код

baton.onclick=window.opener.deattach;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)