>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Как подписаться на событие элемента ? http://forum.mozilla-russia.org/viewtopic.php?id=9759 |
CVB > 19-04-2006 16:14:15 |
Помогите плз. подписаться на событие конкретного элемента. Выделить код Код:function Test() { alert('text'); } var inputs = document.getElementsByTagName('input'); for(var k=0;k<inputs.length;k++) { var input = inputs[k]; if(input.type == 'text') { input.onclick = "Test"; } } в консоле нет никаких ошибок но ф-ция Test не вызывается. И так: Выделить код Код:window.addEventListener("click", OnClickEvent, true); function OnClickEvent(event) { if (event.originalTarget.nodeName=="input") alert(event.originalTarget.nodename); } nodename постоянно неизвестно. Нужно при нажатии на любой элемент изменить у него стиль ! |
RcT > 19-04-2006 17:16:48 |
Нужно что-то типа вот этого? Выделить код Код:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>New Document</title> <meta http-equiv="content-type" content="text/html; charset=iwindows-1251"> <script> function colorize(a) { //alert(a.parentNode.parentNode); var ch = a.parentNode.parentNode.getAttribute("pus"); if (ch == "unchecked") { a.parentNode.parentNode.style.background='#B4D8B4'; a.parentNode.parentNode.setAttribute("pus", "checked"); } else { a.parentNode.parentNode.style.background='#FFFFFF'; a.parentNode.parentNode.setAttribute("pus", "unchecked"); } } </script> </head> <body> <form action="" method="POST"> <table border="1"> <tr pus="unchecked"><td><input onclick="colorize(this);" type="checkbox" name="chk">checkbox</td><td>vfvvfdvfvcf</td></tr> </table></form> </body> </html> |
CVB > 19-04-2006 17:49:22 |
это немного нето |
RcT > 19-04-2006 18:10:20 |
У меня второой вариант работает ... Выделить код Код:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>New Document</title> <meta http-equiv="content-type" content="text/html; charset=iwindows-1251"> <script> window.addEventListener("click", OnClickEvent, true); function OnClickEvent(event) { if (event.originalTarget.nodeName == "P") alert(event.originalTarget.nodeName); } </script> </head> <body> <p>dfcdw</p> </body> </html> |
CVB > 19-04-2006 18:16:32 |
я пишу Extension и мне возвращяет nodename undefined |
CVB > 19-04-2006 18:19:20 |
ещё если в первом варианте поменять строку то вылазиет ошибка:
|
CVB > 19-04-2006 18:21:14 |
а HTML-код Выделить код Код:<script> function Klik2() { alert('bbbb'); } function Klik() { alert('aaaa'); document.getElementById('aaa').onclick = function(){alert('kkkk');}; } </script> <input id="aaa" type="text"></input> <input onclick="Klik()" type="button"></input> работает как надо. |
RcT > 19-04-2006 18:21:15 |
CVB |
CVB > 19-04-2006 18:27:09 |
Да действительно надо nodeName. |
Yan > 19-04-2006 22:08:46 |
CVB Выделить код Код:<html> <head> <title>New Document</title> <meta http-equiv="content-type" content="text/html; charset=iwindows-1251"> <script type="text/javascript"> function Test() { alert('text'); } function AddListeners(){ var inputs = document.getElementsByTagName('input'); for(var k=0;k<inputs.length;k++) { var input = inputs[k]; if(input.type == 'text') { input.addEventListener("click",Test, true) } } } window.addEventListener("load",AddListeners, true); </script> </head> <body> <form> <input type="text" value="test"> <br> <input type="text" value="test2"> <br> <input type="checkbox"> </form> </body> </html> |
CVB > 20-04-2006 11:51:10 |
При использовании вашего кода в Расширении он не работает ! Приведу Кусок кода побольше Выделить код Код:<?xml version="1.0"?> <?xml-stylesheet href="chrome://get_html_info/skin/get_html_info.css" type="text/css"?> <overlay id="get-html-info-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/x-javascript" src="chrome://get_html_info/content/get_html_info.js"/> </overlay> файл .JS Выделить код Код:window.addEventListener("load", ext_onInit, false); function ext_PDM_onInit() { try { document.addEventListener("DOMContentLoaded", OnDocument, true); } catch (err) { alert(err); return; } } function OnDocument(event) { SelectElem(event. originalTarget); } function Test() { alert('text'); } function SelectElem(doc) { var inputs = doc.getElementsByTagName('input'); for(var k=0;k<inputs.length;k++) { var input = inputs[k]; if(input.type == 'text') { input.addEventListener("click",Test, true); } } } Функция тест не вызывается ! Ошибок в консоле нет. |
Yan > 20-04-2006 12:31:30 |
CVB
Найдите 4 отличия в выделенных кусках. P.S. Исправил, проверил - всё работает. |
CVB > 20-04-2006 12:41:42 |
Это опечатка !
|
Yan > 20-04-2006 12:51:39 |
Единственное, что я сделал - это подправил название функции. И всё заработало.
Какие сообщения выведутся, а какие нет? |
CVB > 20-04-2006 12:58:20 |
У меня не выполняется alert('text'); Все остальные alert-ы выполняются ! |
Yan > 20-04-2006 13:07:27 |
У меня следующий код везде работает, например, на http://ya.ru/ Выделить код Код:window.addEventListener("load", ext_PDM_onInit, false); function ext_PDM_onInit() { try { document.addEventListener("DOMContentLoaded", OnDocument, true); } catch (err) { alert(err); return; } } function OnDocument(event) { SelectElem(event. originalTarget); } function Test() { alert('text1'); } function SelectElem(doc) { var inputs = doc.getElementsByTagName('input'); for(var k=0;k<inputs.length;k++) { var input = inputs[k]; if(input.type == 'text') { input.addEventListener("click",Test, true); } } } При клике на поле поиска выдаёт "text1"... |
CVB > 20-04-2006 13:23:21 |
блин вот в чем подвох был input.addEventListener("click",Test, true); делал (стормозил однако) var tmp = form.innerHTML; Поменял их местами и все заработало |
CVB > 20-04-2006 14:18:41 |
Ещё один вопросик Выделить код Код:добавим код в функцию SelectElem(doc): if(input.type == 'submit') { input.style.backgroundColor = ColorGreen; input.addEventListener('click', OnSubmitClick, true); } и функцию function OnSubmitClick(event) { } как можно заблокировать нажатие кнопки "Найти" на www.ya.ru так чтоб onclick кнопке приходил но кроме выполнения function OnSubmitClick(event) больше обработщиков не вызывалось (тоесть поиск бы не начался) |
Yan > 20-04-2006 14:56:46 |
Поменять type с submit на button? |
CVB > 20-04-2006 15:01:01 |
Спасибо я уже так и сделал! |