谢谢,我用了http://www.jxxg.com/dh20156/dhcombobox/dhcombobox.htm的代码.已基本实现我要的效果. 这个代码写得相当漂亮.推荐看到的人都看看.有个新问题:window.event.cancelBubble = true;在firefox中报错: window.event has no propreties怎样写js才能实现window.event.cancelBubble = true;的功能,并且支持IE和firefox?
ff也有cancelBubble 只不过window.event FF没它。。 获取event就可以了。。 方法可以用。var reEvent = function () { return window.event ? window.event : (function (o) { do { o = o.caller; } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0])); return o.arguments[0]; })(this.reEvent); };
这样写IE又不行了,reEvent.cancelBubble = true;在IE中没起作用。 -------------------------------------------------------------- var reEvent = function () { return window.event ? window.event : (function (o) { do { o = o.caller; } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0])); return o.arguments[0]; })(this.reEvent); };这段代码中后面的我不太懂。 我把这段代码放在js文件中,把window.event.cancelBubble = true;替换为reEvent.cancelBubble = true; 在firefox中没有报错,但中在IE中没起作用。
<script type="text/javascript"> Object.reEvent = function () { return window.event ? window.event : (function (o) { do { o = o.caller; } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0])); return o.arguments[0]; })(this.reEvent); };var show = function (a) { var e = Object.reEvent(); if (a) e.cancelBubble = true; }; </script> <div style="width:100px; height:100px; background-color:#0099CC; border:#CCCCCC 1px solid;" onclick="alert('我是外面的')"> <div style="width:100px; height:30px; background-color:#F4F4F4; border:#CCCCCC 1px solid;" onclick="show(true)"> </div> <div style="width:100px; height:30px; background-color:#FFF7FB; border:#CCCCCC 1px solid;" onclick="show(false)"> </div> </div>
to muxrwc: -------------------- 你的代码没问题! 可拷到我的代码中,firefox就在return o.arguments[0];报错。我的js是写在一个类里面的.window.event.cancelBubble = true 写在一个文本框.onkeydown事件中。
http://www.never-online.net/code/neverModules/autocomplete/JK:
http://jkisjk.spaces.live.com/blog/cns!758CACE25E89DD3B!365.entrydh20156:
http://www.jxxg.com/dh20156/dhcombobox/dhcombobox.htm
这个代码写得相当漂亮.推荐看到的人都看看.有个新问题:window.event.cancelBubble = true;在firefox中报错:
window.event has no propreties怎样写js才能实现window.event.cancelBubble = true;的功能,并且支持IE和firefox?
只不过window.event FF没它。。
获取event就可以了。。
方法可以用。var reEvent = function () {
return window.event ? window.event : (function (o) {
do {
o = o.caller;
} while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
return o.arguments[0];
})(this.reEvent);
};
--------------------------------------------------------------
var reEvent = function () {
return window.event ? window.event : (function (o) {
do {
o = o.caller;
} while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
return o.arguments[0];
})(this.reEvent);
};这段代码中后面的我不太懂。
我把这段代码放在js文件中,把window.event.cancelBubble = true;替换为reEvent.cancelBubble = true; 在firefox中没有报错,但中在IE中没起作用。
Object.reEvent = function () {
return window.event ? window.event : (function (o) {
do {
o = o.caller;
} while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
return o.arguments[0];
})(this.reEvent);
};var show = function (a) {
var e = Object.reEvent();
if (a) e.cancelBubble = true;
};
</script>
<div style="width:100px; height:100px; background-color:#0099CC; border:#CCCCCC 1px solid;" onclick="alert('我是外面的')">
<div style="width:100px; height:30px; background-color:#F4F4F4; border:#CCCCCC 1px solid;" onclick="show(true)"> </div>
<div style="width:100px; height:30px; background-color:#FFF7FB; border:#CCCCCC 1px solid;" onclick="show(false)"> </div>
</div>
--------------------
你的代码没问题!
可拷到我的代码中,firefox就在return o.arguments[0];报错。我的js是写在一个类里面的.window.event.cancelBubble = true 写在一个文本框.onkeydown事件中。
这个方法必须要在函数里使用才可以。
<body>
<div id="divParent" style="background-color: #ffff00; width: 200px; height: 200px;">Parent!
<div id="divChild" style="background-color: #00ffff; width: 100px; height: 100px;">
Child!
</div>
</div>
<script type="text/javascript">
<!--
var oParent = document.getElementById("divParent");
var oChild = document.getElementById("divChild");
oParent.onclick = function(){
alert("Parent");
}
oChild.onclick = function(e)
{
e = e||window.event;
alert("Child");
// 停止冒泡!
// 注释看看效果有何不同!
e.cancelBubble = true;
};
//-->
</script>
</body>
document.onkeydown=function(e){
e=e || window.event;
e=e.which || e.keyCode;
if(e==13)
alert("document.onkeydown触发了");
}
Object.reEvent = function () {
return window.event ? window.event : (function (o) {
do {
o = o.caller;
} while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
return o.arguments[0];
})(this.reEvent);
};
var testBox=document.getElementById("testBox");
testBox.onkeydown = function(e){
e=e || window.event;
e=e.which || e.keyCode;
var f = Object.reEvent();
f.cancelBubble = true;
if(e==13)
alert("testBox.onkeydown触发了");
}
</script>
e=e || window.event;
e=e.which || e.keyCode
是从别人的代码中抄的,不太明白什么意思
<input type="text" id="testBox" /><script language="javascript">
document.onkeydown=function(e){
e=e || window.event;
e=e.which || e.keyCode;
if(e==13)
alert("document.onkeydown触发了");
}
Object.reEvent = function () {
return window.event ? window.event : (function (o) {
do {
o = o.caller;
} while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
return o.arguments[0];
})(this.reEvent);
};
var testBox=document.getElementById("testBox");
testBox.onkeydown = function(e){
e=e || window.event;
var f=e.which || e.keyCode;
e.cancelBubble = true;
if(f==13)
alert("testBox.onkeydown触发了");
}
</script>
-----------------------------
受“参考”代码的影响,我将代码改成这样,没问题了,但不明白为什么?
还有
e=e || window.event;
e=e.which || e.keyCode;
这两句到底什么意思?