单击1次后禁用Javascript功能

时间:2018-11-08 07:43:13

标签: javascript events

我阅读了10多篇文章,尝试了许多代码,但没有找到解决方案,因此这是我的代码,我想单击1次后禁用此功能

<script type="text/javascript">
window.onclick = MyPopUpLink;
function MyPopUpLink() {
  document.getElementsByTagName("body")[0] = window.open("https://google.com");
};
</script> 

请,这可能与许多其他文章相似,但是我找不到解决方案,所以请帮助我。谢谢

6 个答案:

答案 0 :(得分:5)

改为使用addEventListener,您可以在监听器上附加一个once选项,这意味着它将仅运行一次:

document.addEventListener('click', () => {
  window.open("https://google.com");
}, { once: true });

(由于SO的沙箱问题,无法嵌入代码段,但您可以在JSFiddle here上看到它)

请注意,引用document.body比引用getElementsByTagName("body")[0]要容易得多,将window.open分配给document.body并没有任何用处。

答案 1 :(得分:0)

只是重新分配。

window.onclick = function() {
 document.getElementsByTagName("body")[0] = window.open("https://google.com");
 window.onclick = ""
};

答案 2 :(得分:0)

您可以通过定义一个处理打开窗口行为的函数,然后将该函数绑定到文档click元素的body事件来实现。

为防止事件再次触发,请致电:

document.body.removeEventListener('click', onClickBody);

从处理程序中“单击”该单击事件,以防止在随后的单击中执行弹出行为:

function onClickBody() {
  
  // Cannot call this in snippet
  // window.open("https://google.com");
  alert('window.open("https://google.com");')
  
  // Remove this event handler to prevent the event handler from being
  // fired again on subsequent body clicks
  document.body.removeEventListener('click', onClickBody);
}

document.body.addEventListener('click', onClickBody);
Body fires click once

答案 3 :(得分:0)

您可以添加一个事件侦听器,该事件侦听器使用本机“ addEventListener”触发一次,如下所示:

document.body.addEventListener('click', function(){
    // your code here
}, { once:true })

您可以在此处阅读有关addEventListener及其选项的更多信息:https://developer.mozilla.org/de/docs/Web/API/EventTarget/addEventListener#Syntax

如果您不希望通过jquery达到相同的行为(您对帖子加了标签),则可以使用“ one”功能:http://api.jquery.com/one/

您像这样使用它

$(document.body).one('click', function(){
    // your code here
})

答案 4 :(得分:0)

一个选项是创建一个变量,该变量在首次运行该函数后进行更新。(这适用于任何函数)

<script type="text/javascript">
   var enabled = true;
   window.onclick = MyPopUpLink;
   function MyPopUpLink() {
        if(enabled == true){
          document.getElementsByTagName("body")[0] = window.open("https://google.com");
          enabled = false;
        }
   };
</script> 

另一种选择是使用addEventListener事件而不使用任何功能。
但这仅适用于事件。

document.addEventListener('click', () => {
    window.open("https://google.com");
}, {once: true});

您还可以使用内联事件onclick="MyPopUpLink()"

答案 5 :(得分:0)

尝试此代码段。

let counter1=0;
window.onclick = MyPopUpLink;
function MyPopUpLink() {
if(counter1===0){
  document.getElementsByTagName("body")[0] = window.open("https://google.com");
  counter1++
}
}