求各浏览器重写右键事件的javascript代码!该怎么处理
求各浏览器重写右键事件的javascript代码!
下面这个方法IE8、Chrome可以,火狐不行:
求优化,求其他浏览器的实现代码,火狐是重点。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
把 if(ev.stopPropagation) ev.stopPropagation();
else ev.cancelBubble = true;
改成
试试看,取消默认事件~
------解决方案--------------------
下面这个方法IE8、Chrome可以,火狐不行:
<body oncontextmenu="右键函数();"></body>
function 右键函数(ev){
ev = ev || window.event; //获取事件对象
var elem = ev.srcElement||ev.target; //获取触发事件的对象
if (/\d+\|\d+/.test(elem.id)){ //如果id满足条件,执行代码
turned();
return false;
}
}
求优化,求其他浏览器的实现代码,火狐是重点。
------解决方案--------------------
<script type="text/javascript">
function turned(){
alert('turned');
}
function doit(ev){
ev = getEvent(); //获取事件对象
var elem = ev.srcElement
------解决方案--------------------
ev.target; //获取触发事件的对象
if(ev.button==2){
if (/\d+\
------解决方案--------------------
\d+/.test(elem.id)){ //如果id满足条件,执行代码
turned();
if(ev.stopPropagation) ev.stopPropagation();
else ev.cancelBubble = true;
return false;
}
}
}
function getEvent() {
if (document.all) {
return window.event; //for ie
}
func = getEvent.caller;
while (func != null) {
var arg0 = func.arguments[0];
if (arg0) {
if ((arg0.constructor == Event
------解决方案--------------------
arg0.constructor == MouseEvent)
------解决方案--------------------
(typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
return arg0;
}
}
func = func.caller;
}
return null;
}
window.onload = function(){
document.body.onmousedown = doit;
}
</script>
<div id="a1
------解决方案--------------------
2">xxxx</div>
------解决方案--------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style>
</style>
<script>
/**
* 为需要设置的dom添加右键事件
* @object el
* 需要添加事件的dom对象
* @function fun
* 右键事件调用的方法
*/
function addContextmenu(el,fun){
var tmpEvent=function(el){
return function(event){
event=event
------解决方案--------------------
window.event;
if(event.button==2){
fun(el,event);
}
}
}
try{
el.addEventListener('mousedown',tmpEvent(el),true);
}
catch(ex){
el.attachEvent('onmousedown',tmpEvent(el),true);
}
}
/**
* 随便定义一个右键事件方法,方法有两个参数,第一个参数为事件响应的dom对象,第二个为事件对象
*/
var testEvent=function(el,e){
alert(el.innerHTML);
}
</script>
</head>
<body>
<div id='div1'>右键测试</div>
<script>
//效果:按照testEvent的内容,在"右键测试"上右击,弹出'右键测试'",方法自定义
addContextmenu(document.getElementById('div1'),testEvent);
//可以继续添加,下面的效果:右键点击"右键测试",弹出div的id,上面的效果后继续这个效果
addContextmenu(document.getElementById('div1'),function(el,e){alert(el.id)});
</script>
</body>
</html>
------解决方案--------------------
把 if(ev.stopPropagation) ev.stopPropagation();
else ev.cancelBubble = true;
改成
if(ev.preventDefault) ev.preventDefault();
else ev.returnValue = false;
试试看,取消默认事件~
------解决方案--------------------