在这个缩写代码中,内联事件有效 - “事件”传递给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
}
}
但是,在这个匿名版本中,事件不会在gecko中传递:
<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};
}
如何传递函数自己的事件?
答案 0 :(得分:3)
是的,有一个事件对象作为参数。
你可以通过
获得它var e=arguments[0] || event; // Firefox via the argument, but IE don't
我不知道他们是否完全相同,但我将<xxx onkeydown="func(event);">
视为xxx.ononkeydown=function(event){func(event);};
答案 1 :(得分:0)
像魅力一样工作。对我的原始代码的这种修改成功地将事件从匿名函数传递到我的四个浏览器中的命名函数: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};
}