Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2012, 21:06
Интересующийся
Отправить личное сообщение для Guliashik Посмотреть профиль Найти все сообщения от Guliashik
 
Регистрация: 06.06.2012
Сообщений: 16

Не работает обработчик события в 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'. Какое то несоответствия между консолью и выводом. В чём может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 06.06.2012, 21:12
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

вешайте события через:
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);
});
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 06.06.2012, 21:39
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от devote Посмотреть сообщение
вешайте события через:
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);
});
а в чем разница ?
Ответить с цитированием
  #4 (permalink)  
Старый 06.06.2012, 21:42
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Guliashik,
Html выложите или ссылку на тестовую иногда фокус не проходит из-за cтруктуры HTML
Ответить с цитированием
  #5 (permalink)  
Старый 06.06.2012, 21:43
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от cyber
а в чем разница ?
в том что объект event который юзает ТС:
document.getElementById('combo_1').onfocus=function(){
    tatarcha.comboChange(*!* event */!*,true);
};
глобально определен не у всех, и не является стандартным решением.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #6 (permalink)  
Старый 06.06.2012, 21:53
Интересующийся
Отправить личное сообщение для Guliashik Посмотреть профиль Найти все сообщения от Guliashik
 
Регистрация: 06.06.2012
Сообщений: 16

<?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 );
                });
??
Ответить с цитированием
  #7 (permalink)  
Старый 06.06.2012, 21:56
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Guliashik
Не помогло. Также MF не работает.
Я же специально дал пример использования:
addEvent( document.getElementById('combo_1'), "focus", function( *!* event */!* ){
    tatarcha.comboChange(event,true);
});
объект event добавьте

Сообщение от Guliashik
Вопрос: зачем
для ишака
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 06.06.2012, 22:08
Интересующийся
Отправить личное сообщение для Guliashik Посмотреть профиль Найти все сообщения от Guliashik
 
Регистрация: 06.06.2012
Сообщений: 16

Спасибо! Помогло!
На ишаке работает просто без этой конструкции.
Цитата:
event глобально определен не у всех, и не является стандартным решением.
Сейчас попробую разобраться почему так. А что значит он определён не у всех? Точнее, кто эти все? Внутри функции не было ссылки на объект event или что?
Спасибо ещё раз за помощь!
Ответить с цитированием
  #9 (permalink)  
Старый 06.06.2012, 22:15
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Guliashik
А что значит он определён не у всех?
Это значит что данное решение придумал микрософт, вытащив объект event в глобальное пространство, и некоторые браузеры просто его там держат для того что бы работали старые сайты, тоесть хром/опера так же содержат глобальный объект event но ФФ его не содержит, так как ФФ старается юзать то что пишут в стандартах, другие браузеры тоже держат стандарты но помимо этого еще и изжитки старых ИЕ пытаются поддерживать ради совместимости.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #10 (permalink)  
Старый 06.06.2012, 22:27
Интересующийся
Отправить личное сообщение для Guliashik Посмотреть профиль Найти все сообщения от Guliashik
 
Регистрация: 06.06.2012
Сообщений: 16

То есть получается в ФФ существует event только в контексте функции (в приведенном случае -обработчик события). И до этого (до правки исходного кода) у меня event был равен null?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как "обмануть" обработчик события? itPiligrim Events/DOM/Window 0 13.05.2010 22:55
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Различное отображение текста в IE7 и Mozilla Firefox alinka Javascript под браузер 5 02.09.2009 22:03
В Mozilla Firefox 3.0 проблемма с Javascript меню artmedia Элементы интерфейса 1 07.09.2008 10:43