ポップアップを開く前にリンクを無効にして、5秒後に再度有効にすることができます。問題は、リンクを有効/無効にすることは、非常に移植性の高い方法では実行できないことです。これを回避するには、実際のリンクを保存し、偽のリンクに置き換えてから、後で(間隔が経過したときに)再度有効にする必要があります。このような:
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>
pointer-events
CSSプロパティはIE(およびOpera)でサポートされていないため、実際に使用することを提案することはできません。とにかくそれは:
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);
// ...
}