Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Кроссброузерное создание обработчика события

Ответить
Настройки темы
[решено] Кроссброузерное создание обработчика события

Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Господа, есть следующий код:
Код: Выделить весь код
<script language="JavaScript" type="text/javascript">
<!--
var d = document;
function create_form(id) {
var ph_comm = d.getElementById('ph_comm');
var button = d.createElement('input');
button.setAttribute('name','button');
button.setAttribute('type','button');
button.setAttribute('value','Отправить');
button.setAttribute('onclick','alert(123)');
button.className = 'lang_link';
ph_comm.appendChild(button);
}
//-->
</script>
<A class=lang_link onclick="create_form(); return false;" href="javascript:void(0);">Создать кнопку</A>
<div id="ph_comm"></div>
Делает следующее: при нажати на ссылку "Создать кнопку" - создается кнопка средствами DOM с параметром onclick при нажатии на эту кнопку должен саботать код alert(123)
Не пойму почему не срабатывает событие (!)
Интересно что в Firefox - срабатывает.

P.S. IE 6.0 SP2

Отправлено: 15:19, 20-12-2006

 

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


A
Код: Выделить весь код
javascript:alert('123')
?

-------
Fortes fortuna adiuvat


Отправлено: 18:09, 20-12-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Для IE потребуется что-то в роде:
Код: Выделить весь код
button.onclick = new Function('evt', 'alert(123)');
Однако лучше, имхо, использовать уже готовое решение

Код: Выделить весь код
function addEvent(elt, name, handler, atEnd)
  {
   name = name.replace(/^(on)?/, 'on');
   var prev = elt[name];
   var tmp = '__tmp';
   elt[name] = function(e) {
     if (!e) e = window.event;
     var result;
     if (!atEnd) {
       elt[tmp] = handler;
       result = elt[tmp](e);
       elt[tmp] = null; // delete() does not work in IE 5.0 (???!!!)
       if (result === false) return result;
     }
     if (prev) {
       elt[tmp] = prev; result = elt[tmp](e); elt[tmp] = null;
     }
     if (atEnd && result !== false) {
       elt[tmp] = handler; result = elt[tmp](e); elt[tmp] = null;
     }
     return result;
   }
   return handler;
 }
следующим, примерно, образом:
Код: Выделить весь код
addEvent(button, 'onclick', function(e) { alert(123) });
Этот способ удобен тем, что объявив перед созданием анонимной функции некие нужные нам переменные, мы создаем "замыкание", грубо говоря, анонимная функция крутится в окружении этих переменных как объявленных глобально.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:00, 20-12-2006 | #3


Deadooshka


Сообщения: 2517
Благодарности: 692

Профиль | Отправить PM | Цитировать


Для IE и такой вариант прокатит
HTML код: Выделить весь код
var button = d.createElement('<input onclick=alert(123)>');


Отправлено: 00:11, 21-12-2006 | #4


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Да, самое оно. Решено.

Отправлено: 13:40, 21-12-2006 | #5



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Кроссброузерное создание обработчика события

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
EventID - Уведомление Ист. события: HHCTRL Категория события: Отсутствует. Код события: 1903 cleric1985_n Устранение критических ошибок Windows 7 27-11-2015 16:14
EventID - Код: 0 Источник: ACEEventLogSource VSerge Устранение критических ошибок Windows 41 22-04-2013 08:53
EventID - Источник события: SceCli, код события: 1202, предупреждение 0x534 Michael Устранение критических ошибок Windows 3 28-01-2009 13:25
Delphi - Создание на Delphi компонентов с непрямоугольной областью реакции на события мыши Andrik Программирование и базы данных 7 02-12-2007 16:34
EventID - [решено] Источник события:Windows Installer 3.1 Код события: 4379 ozzik Устранение критических ошибок Windows 2 31-10-2007 15:41




 
Переход