Не работает обработчик события в Mozilla Firefox
if(!tatarcha.loadEvents) tatarcha.loadEvents=function() { document.getElementById('combo_1').onchange=function(){ tatarcha.comboChange(event,false); }; document.getElementById('combo_2').onchange=function(){ tatarcha.comboChange(event,false); }; document.getElementById('combo_1').onfocus=function(){ tatarcha.comboChange(event,true); }; document.getElementById('combo_2').onfocus=function(){ tatarcha.comboChange(event,true); }; document.getElementById('convert').onclick=tatarcha.convertLanguage; document.getElementById('word').onkeyup=tatarcha.getWord; document.getElementById('insert').onclick=tatarcha.insertWord; } window.onload=tatarcha.loadEvents; Собственно говоря не происходит обработка событий в MF. При этом работает в Chrome, IE, Opera. Проверял через Firebug, ошибок нет. Но, все свойства onclick,onfocus = null. Вывел (typeof document.getElementById('combo_2').onfocus) 'function'. Какое то несоответствия между консолью и выводом. В чём может быть проблема? |
вешайте события через:
function addEvent( elem, evt, listener ) { if ( elem.addEventListener ) { elem.addEventListener( evt, listener, false ); } else if ( elem.attachEvent ) { elem.attachEvent( 'on' + evt, function() { listener.call( elem, window.event ); }); } } addEvent( document.getElementById('combo_1'), "focus", function( event ){ tatarcha.comboChange(event,true); }); |
Цитата:
|
Guliashik,
Html выложите или ссылку на тестовую иногда фокус не проходит из-за cтруктуры HTML |
Цитата:
document.getElementById('combo_1').onfocus=function(){ tatarcha.comboChange(*!* event */!*,true); };глобально определен не у всех, и не является стандартным решением. |
<?php header('Content-Type: text/html; charset=utf-8'); require_once('connect.php'); $rez = mysql_query("Select * FROM lng"); session_start(); if (!(isset($_SESSION['login']) && isset($_SESSION['password']))) { session_unset(); session_destroy(); } ?> <html> <head> <script type="text/javascript" src="scripts/main.js"></script> </head> <body> <form method="POST" action=""> <select name="combo_1" id="combo_1"> <?php for ($i = 0; $i < mysql_num_rows($rez); $i++) { if (mysql_result($rez, $i, 'id') == 'rus') { echo '<option value="' . mysql_result($rez, $i, 'id') . '" selected="selected">' . mysql_result($rez, $i, 'name') . '</option>'; } else { echo '<option value="' . mysql_result($rez, $i, 'id') . '">' . mysql_result($rez, $i, 'name') . '</option>'; } } ?> </select> <input type="button" name="convert" id="convert" value="<->"> <select name="combo_2" id="combo_2"> <?php for ($i = 0; $i < mysql_num_rows($rez); $i++) { echo '<option value="' . mysql_result($rez, $i, 'id') . '">' . mysql_result($rez, $i, 'name') . '</option>'; } ?> </select> <br> <textarea name="word" id="word" cols="30" rows="3"></textarea> <textarea name="translate" id="translate" cols="30" rows="3"></textarea><br> </form> <script type="text/javascript" src="scripts/alphabet.js"></script> </body> </html> tatarcha.addEvent=function(element,type,listener) { if(element.addEventListener) { element.addEventListener(type, listener, false); } else { if(element.attachEvent) { element.attachEvent('on'+type,function() { listener.call( element, window.event ); }); } } } if(!tatarcha.loadEvents) tatarcha.loadEvents=function() { tatarcha.addEvent(document.getElementById('combo_1'), 'change',function(){ tatarcha.comboChange(event,false); }); tatarcha.addEvent(document.getElementById('combo_2'), 'change',function(){ tatarcha.comboChange(event,false); }); tatarcha.addEvent(document.getElementById('combo_1'), 'focus',function(){ tatarcha.comboChange(event,true); }); tatarcha.addEvent(document.getElementById('combo_2'), 'focus',function(){ tatarcha.comboChange(event,true); }); } window.onload=tatarcha.loadEvents; Не помогло. Также MF не работает. Вопрос: зачем element.attachEvent('on'+type,function() { listener.call( element, window.event ); });?? |
Цитата:
addEvent( document.getElementById('combo_1'), "focus", function( *!* event */!* ){ tatarcha.comboChange(event,true); });объект event добавьте Цитата:
|
Спасибо! Помогло!
На ишаке работает просто без этой конструкции. Цитата:
Спасибо ещё раз за помощь! |
Цитата:
|
То есть получается в ФФ существует event только в контексте функции (в приведенном случае -обработчик события). И до этого (до правки исходного кода) у меня event был равен null?
|
Часовой пояс GMT +3, время: 22:07. |