Firefox: передать событие от анонимной функции JavaScript - PullRequest
0 голосов
/ 28 ноября 2008

В этом сокращенном коде работает встроенное событие - «событие» передается функции testKeyPress

<textarea id="source"
    onkeydown= "showCursPos(this); 
    var tf=testKeyPress(event);
    document.onkeypress=function(){return tf};
    document.onkeydown=function(){return tf}; " ></textarea>

function testKeyPress(e){
    if (e.ctrlKey==true ){
        if (e.which == null ){kcode=e.keyCode; }  // IE
        else if (e.which > 0){kcode=e.which; }    // gecko
        return testValidity(kcode);   //returns true-false
    }
}

Однако в этой анонимной версии событие не передается в гекконе:

<textarea id="source"></textarea>

$("source").onkeydown = function(){ 
    showCursPos(this);  // this function works
    // next event is passed in IE, but not gecko
    var tf=testKeyPress(event); 
    // remaining functions work if value is forced
    document.onkeypress=function(){return tf}; 
    document.onkeydown=function(){return tf}; 
    }

Как передать собственное событие функции?

Ответы [ 2 ]

3 голосов
/ 28 ноября 2008

Да, в качестве аргументов есть объект события.

Вы можете получить его по

var e=arguments[0] || event; // Firefox via the argument, but IE don't

Не знаю, совпадают ли они точно, но я читаю <xxx onkeydown="func(event);"> как xxx.ononkeydown=function(event){func(event);};

Ссылка событие @ Mozilla.org

0 голосов
/ 29 ноября 2008

работал как шарм. Эта модификация моего исходного кода успешно передает событие от анонимной функции к названной функции в моих четырех браузерах: IE6, FF2, NS7.2, OP9.22

$("source").onkeydown = function(){ 
    var e=arguments[0] || event; 
    showCursPos(this);  
    var tf=testKeyPress(e); 
    document.onkeypress=function(){return tf}; 
    document.onkeydown=function(){return tf}; 
}
...