您可以在打开弹出窗口之前禁用该链接,然后在五秒钟后重新启用它。问题是启用/禁用链接不能以非常便携的方式完成。要解决此问题,您必须保存实际链接,将其替换为假链接,然后稍后重新启用它(当间隔过去时)。像这样:
function newPopup(url) {
// Save current link and replace it with a fake one
var oldLink = $("#linkid").attr("href");
$("#linkid").attr("href", "#");
setinterval(function() {
// Restore true link
$("#linkid").attr("href", oldLink);
}, 5000);
// ...
}
您可以将此代码提取到一个单独的函数temporaryDisableLink(id, timeout)
中,以便将其用于许多不同的链接(不会污染所有其他代码)。
现在让我们探索其他解决方案。
您的 HTML 代码必须更新为(如果您想对许多链接重复使用相同的函数,否则您不需要传递链接 id 参数)到:
<a id="link-print"
href="JavaScript:newPopup('#link-print', 'print.php');">
Print
</a>
IE(和 Opera)不支持 CSS 属性,pointer-events
所以我不建议在现实世界中使用它。反正就是:
function newPopup(id, url) {
$(id).css("pointer-events", "none");
setinterval(function() {
$(id).css("pointer-events", "auto");
}, 5000);
// ...
}
因为您使用 JavaScript 打开弹出窗口,您可能会考虑稍微更改函数以使用自定义 disabled
属性(或检查pointer-events
您是否打算一起使用它们):
function newPopup(id, url) {
if ($(id).attr("disabled") == "disabled") {
return false;
}
$(id).attr("disabled", "disabled");
setinterval(function() {
$(id).removeAttr("disabled");
}, 5000);
// ...
}