关于在Firefox中的事件处理问题,
怎样在Firefox中处理键盘事件?
我定义了一个键盘响应函数,
var doKeyDown=function(srcNode){......}
其中参数srcNode为传入的节点对象。
在IE中工作正常,因为我可以直接获取window.event
属性及其属性值。
我从网上查到一些资料,都说可以让事件对象
以参数形式传入响应函数,但是网上都是原来的函数
没有参数的情况下,而我的函数已经有了一个
参数该怎么处理???
我试着把响应函数改成这样:
var doKeyDown=function(srcNode,e){......}
然后在函数里获取,然而当我用alert(arguments.length);
语句测试时发现只传入了一个参数给响应函数,
请问这是为什么?
始终获取不到事件对象e的值,有人知道怎么解决吗???
怎样在Firefox中处理键盘事件?
我定义了一个键盘响应函数,
var doKeyDown=function(srcNode){......}
其中参数srcNode为传入的节点对象。
在IE中工作正常,因为我可以直接获取window.event
属性及其属性值。
我从网上查到一些资料,都说可以让事件对象
以参数形式传入响应函数,但是网上都是原来的函数
没有参数的情况下,而我的函数已经有了一个
参数该怎么处理???
我试着把响应函数改成这样:
var doKeyDown=function(srcNode,e){......}
然后在函数里获取,然而当我用alert(arguments.length);
语句测试时发现只传入了一个参数给响应函数,
请问这是为什么?
始终获取不到事件对象e的值,有人知道怎么解决吗???
document.onkeydown = function (e) {}
...
document.onkeydown = function (a) {}
document.onkeydown = function (b) {}
document.onkeydown = function (c) {}
而是第一个参数。
var doKeyDown=function(e,srcNode){......}
也不行啊!!!
用alert(arguments.length);测试显示只传进了一个参数。
document.onkeydown = function (e) {
alert(srcNode);
}
function KeyUp(e) {
var keyc;
if(window.event) {
keyc=e.keyCode;
} else if(e.which) {
keyc=e.which;
}
alert(keyc);
}<input type="text" onkeyup="KeyUp(event)"/>
可以使用多个参数的,如:KeyUp(this.value,event)
var srcNode= $("xx"); 不是获取定值吗?
===============================<input type='button' value='click me' onclick="doKeyDown('a')"/>
<script type="text/javascript">
var doKeyDown = function(arg){
var _e = window.event || arguments.callee.caller.arguments[0];
alert(_e);
alert(arg);
}
</script>
请问上面这句代码是什么意思啊?
怎么是callee又是caller的啊?
我不太明白,没有用过callee和caller
不知道它们是什么意思。
,具体怎么使用callee和caller啊?
还有就是我用alert(arguments.length);测试了一下
返回值怎么还是1而不是2啊???
<script type="text/javascript">
var doKeyDown = function(arg){
alert(arguments.callee.caller.toString());//这样是不是一目了然了?argument.callee就是函数本身,caller函数的调用函数.具体请google.
var _e = window.event || arguments.callee.caller.arguments[0];
alert(_e);
alert(arg);
}
</script>
var a = function(){
b();
}var b = function(){
alert(arguments.callee)
alert(arguments.callee.caller);
}
a();
返回值怎么还是1而不是2啊???
你到底有没有看alert(arguments.callee.caller.toString());这个东西?
根据我的例子,ie下输出
===================function anonymous()
{
doKeyDown('a');
}
ff下输出
===================function onclick(event)
{
doKeyDown('a');
}看到没?你想要的event是作为doKeyDown的caller的第一个也是唯一一个参数。你在doKeyDown函数里alert(argument.length),当然是1,难道是2?
再次打扰了!!!
我的意思是我用alert(arguments.length);测试了一下
返回值是1,就是说传进了一个参数,但是这个参数是event
对象还是字符串'a'啊?
event对象加上字符串'a'不应该是2吗?
直接在你的绑定函数上修改
yourobj.onkeydown=function(e){
var a=yourobj.a;
handleKeyDown(a,e);
}或者
yourobj.onkeydown=function(e){
var evt=e||window.event;
var srcEl=evt.target||srcEl.srcElement;
var nKeyCode=evt.which||evt.keyCode;
var a=yourobj.a;
......
}没那么麻烦
var doKeyDown=function(srcNode){......}
其中参数srcNode为传入的节点对象。
调用时这样调用的:
doKeyDown(node);
而且我的关于处理event对象的代码也都在里面,
以前在IE上正常显示
(因为IE不用获取事件对象,可以直接使用,所以对于IE来说参数无所谓),
现在要求Firefox也正常显示(但是Firefox却要求首先获取事件对象,
才能对事件作进一步的处理,所以对于Firefox来说参数真的很重要)
,真的不太好弄啊!!!