gpt4 book ai didi

javascript - setTimeout window.open 不能接受 this.href

转载 作者:行者123 更新时间:2023-12-02 18:19:22 25 4
gpt4 key购买 nike

我试图在 3000 毫秒后打开 onMouseOver 的 href。但它只是弹出一个空白窗口。我错过了什么?

HTML:

<a href="../cc2b/myrec.html" onMouseOver="Popup = setTimeout('openwindow(this.href)',3000);" onMouseOut="clearInterval(Popup)">My Rec</a>

JavaScript:

var Popup = null;

function openwindow()
{
var win = window.open()
}

最佳答案

(好吧,首先,您需要向 window.open() 提供一个 URL,否则它不知道要打开哪个页面。除此之外:)

当您执行setTimeout()时,this的值将在延迟代码中重置。

一个快速解决方法是立即提取 URL,然后将一个函数传递到可以使用该变量的 setTimeout() 中。

<a href="../cc2b/myrec.html"
onMouseOver="var popupUrl = this.href; Popup = setTimeout(function(){openwindow(popupUrl)}), 3000);"
onMouseOut="clearInterval(Popup)">
My Rec
</a>

但是,更简洁的解决方案是通过在 openhoverpopup 函数中设置超时来最小化 onMouseOver 中的代码:

<a href="../cc2b/myrec.html"
onMouseOver="openhoverpopup(this.href)"
onMouseOut="clearhoverpopup()">
My Rec
</a>
<script>
var popupTimeout = null;
function openhoverpopup(url) {
popupTimeout = setTimeout(function () {
window.open(url);
}, 3000);
}
function clearhoverpopup() {
clearTimeout(popupTimeout);
}
</script>

关于javascript - setTimeout window.open 不能接受 this.href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18981172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com