(好的,首先,您需要提供一个 URL 到window.open(),否则它不知道要打开哪个页面。除此之外:)
当您执行时,延迟代码中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>
但是,更简洁的解决方案是onMouseOver通过在函数中设置超时来最小化代码openhoverpopup:
<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>