我阅读了10多篇文章,尝试了许多代码,但没有找到解决方案,因此这是我的代码,我想单击1次后禁用此功能
<script type="text/javascript">
window.onclick = MyPopUpLink;
function MyPopUpLink() {
document.getElementsByTagName("body")[0] = window.open("https://google.com");
};
</script>
请,这可能与许多其他文章相似,但是我找不到解决方案,所以请帮助我。谢谢
答案 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++
}
}