事件取消

fuyou001 2010-01-25 03:02:15



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>弹窗代码</title>
<style type="text/css">
td {font-size: 12px;}
</style>
<SCRIPT LANGUAGE="JavaScript" >
function addEventSimple(obj,evt,fn) {
if (obj.addEventListener)
obj.addEventListener(evt,fn,false);
else if (obj.attachEvent)
obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
if (obj.removeEventListener)
obj.removeEventListener(evt,fn,false);
else if (obj.detachEvent)
obj.detachEvent('on'+evt,fn);
}
function fuyouPopUp(targetUrl){
var w=screen.availWidth;
var h=screen.availHeight;
var casalef='width='+w+',height='+h+',toolbar=1,location=1,titlebar=1,menubar=1,scrollbars=1,resizable=1,directories=1,status=1';
var l = 0 ;
var t = 0 ;
var i=window.open("about:blank","_backad",casalef+",left="+l+",top="+t);
i.blur();
i.opener.focus();
i.location=targetUrl;
}
function fuyouClickPopup(targetURl){
addEventSimple(document,'click',function (){
fuyouPopUp(targetURl);
})

}
function fuyouWinOpen(url){
try{
fuyouPopUp(url);
}catch(e){
fuyouClickPopup(url)
}finally{
document.onclick = null;
}
}
function fuyouPop (url){
fuyouWinOpen(url);
}


fuyouPop ('http://www.sina.com');
</SCRIPT>



</head>
<body>
cpm
<a href="http://www.baidu.com">baidu</a>
</body>

</html>



我只想弹出一次,就把不弹了,可我 document.onclick = null;
把事件取消注册,点击还依然会弹出,这是什么,要怎么改进
...全文
148 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fuyou001 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 kk3k2005 的回复:]
function fuyouClickPopup(targetURl){
      /*
        addEventSimple(document,'click',function (){
            fuyouPopUp(targetURl);

        })*/
       
      addEventSimple(document,'click',myclick);
      function myclick(){
            fuyouPopUp(targetURl);
              function removeEventSimple(document,'click',myclick)


        }
   
}

[/Quote]





<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>弹窗代码</title>
<style type="text/css">
td {font-size: 12px;}
</style>
<SCRIPT LANGUAGE="JavaScript" >
function addEventSimple(obj,evt,fn) {
if (obj.addEventListener)
obj.addEventListener(evt,fn,false);
else if (obj.attachEvent)
obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
if (obj.removeEventListener)
obj.removeEventListener(evt,fn,false);
else if (obj.detachEvent)
obj.detachEvent('on'+evt,fn);
}
function fuyouPopUp(targetUrl){
var w=screen.availWidth;
var h=screen.availHeight;
var casalef='width='+w+',height='+h+',toolbar=1,location=1,titlebar=1,menubar=1,scrollbars=1,resizable=1,directories=1,status=1';
var l = 0 ;
var t = 0 ;
var i=window.open("about:blank","_backad",casalef+",left="+l+",top="+t);
i.blur();
i.opener.focus();
i.location=targetUrl;
}
function fuyouClickPopup(targetURl){
/*
addEventSimple(document,'click',function (){
fuyouPopUp(targetURl);

})*/

addEventSimple(document,'click',myclick);
function myclick(){
fuyouPopUp(targetURl);
function removeEventSimple(document,'click',myclick)


}

}
function fuyouWinOpen(url){
try{
fuyouPopUp(url);
}catch(e){
fuyouClickPopup(url)
}finally{
document.onclick = null;
}
}
function fuyouPop (url){
fuyouWinOpen(url);
}


fuyouPop ('http://www.sina.com');
</SCRIPT>



</head>
<body>
cpm
<a href="http://www.baidu.com">baidu</a>
</body>

</html>

我改成这样啊,都没有弹出,用firebug 调试,也没发现错误

KK3K2005 2010-01-25
  • 打赏
  • 举报
回复
function fuyouClickPopup(targetURl){
/*
addEventSimple(document,'click',function (){
fuyouPopUp(targetURl);

})*/

addEventSimple(document,'click',myclick);
function myclick(){
fuyouPopUp(targetURl);
function removeEventSimple(document,'click',myclick)


}

}
fuyou001 2010-01-25
  • 打赏
  • 举报
回复
还是不行,按9楼方法改进后,弹出一次后,再点击不会再弹出,如果你多点几次,再涮新此页面,就很弹出n多窗口
mayer_mq 2010-01-25
  • 打赏
  • 举报
回复
既然自己写了attach和detach的方法,还问这个问题...
fuyou001 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 warison2008 的回复:]
removeEventListener是确保在按钮的时间响应时不触发,如这里的
removeEventSimple(document, 'click', window.documentClick);
就是保证在点击的时候不触发onclick,实际上这里也可以写为onclick="javascript:return false;"即可

你想移除按钮本身的onclick,当然不行啊,
[/Quote]
能稍稍解释下吗
呼吸先生 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 warison2008 的回复:]
removeEventListener是确保在按钮的时间响应时不触发,如这里的
removeEventSimple(document, 'click', window.documentClick);
就是保证在点击的时候不触发onclick,实际上这里也可以写为onclick="javascript:return false;"即可

你想移除按钮本身的onclick,当然不行啊,
[/Quote]
正解。。。
道光2008 2010-01-25
  • 打赏
  • 举报
回复
removeEventListener是确保在按钮的时间响应时不触发,如这里的
removeEventSimple(document, 'click', window.documentClick);
就是保证在点击的时候不触发onclick,实际上这里也可以写为onclick="javascript:return false;"即可

你想移除按钮本身的onclick,当然不行啊,
fuyou001 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ltnrain 的回复:]
需要用removeEventListener方法移除事件的处理函数
[/Quote]
可那个带参数的,要怎么移除

直接onclick = nulll不能移除事件吗
草根醉秋意 2010-01-25
  • 打赏
  • 举报
回复
需要用removeEventListener方法移除事件的处理函数
王集鹄 2010-01-25
  • 打赏
  • 举报
回复
removeEventSimple就是移走事件的函数。

function fuyouClickPopup(targetURl){
window.documentClick = function (){
fuyouPopUp(targetURl);
}
addEventSimple(document,'click', documentClick);
}
function fuyouWinOpen(url){
try{
fuyouPopUp(url);
}catch(e){
fuyouClickPopup(url)
}finally{
removeEventSimple(document, 'click', window.documentClick);
}
}
function fuyouPop (url){
fuyouWinOpen(url);
}


fuyouPop ('http://www.sina.com');
fuyou001 2010-01-25
  • 打赏
  • 举报
回复
自己顶下
fuyou001 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jol_boy 的回复:]
楼主的代码 和所提问题没挂钩嘛,没看明白,你的onclick在哪?
[/Quote]
在这函数里啊

function fuyouClickPopup(targetURl){
addEventSimple(document,'click',function (){
fuyouPopUp(targetURl);
})

}
jol_boy 2010-01-25
  • 打赏
  • 举报
回复
楼主的代码 和所提问题没挂钩嘛,没看明白,你的onclick在哪?
zt_90520 2010-01-25
  • 打赏
  • 举报
回复
学习··· 顶
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2010-01-25 03:02
社区公告
暂无公告