Не работает обработчик события в 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, время: 13:32. |