使用javascript禁用弹出链接5秒

时间:2012-10-18 11:45:42

标签: javascript jquery printing popup disable-link

对于项目,我需要使用PHP代码打印文档。 目前我有一个自动关闭弹出窗口。

我遇到的唯一问题是用户可以通过垃圾邮件发送大量打印请求和大量队列。

我现在的代码:

function newPopup(url) {
popupWindow = window.open(
url,'popUpWindow','height=10,width=100,left=10,top=10,resizable=no,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=no');    // Verstop op achtergrond
popupWindow.blur();
}
<a href="JavaScript:newPopup('print.php');">Print</a>

我找到了一些代码来阻止链接,但我在实现这些方面遇到了问题,因为我已将其称为弹出窗口。

3 个答案:

答案 0 :(得分:3)

您可以使用标志:

var flag=true;
function newPopup(url) {
  if(flag) {
    window.open(...).blur();
    flag=false;
    window.setTimeout(function(){flag=true;},5*1000);
  }
}

不是一个“好”的解决方案(使用全局变量),但它应该可以工作。

答案 1 :(得分:2)

您可以在打开弹出窗口之前禁用该链接,然后在五秒钟后重新启用它。 问题是启用/禁用链接无法以非常便携的方式完成的。要解决此问题,您必须保存实际链接,将其替换为伪链接,然后稍后重新启用它(间隔时间过去)。像这样:

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)不支持pointer-events CSS属性,因此我不建议在现实世界中使用它。无论如何它是:

function newPopup(id, url) {
    $(id).css("pointer-events", "none");

    setinterval(function() {
        $(id).css("pointer-events", "auto");
    }, 5000);

    // ...
}

因为您使用JavaScript打开弹出窗口,所以您可能会考虑更改一些函数以使用自定义 disabled属性(或检查{{1如果你打算一起使用它们):

pointer-events

答案 2 :(得分:-1)

<script>
    function newPopup(url) {
        setTimeout(function () {
            popupWindow = window.open(
url, 'popUpWindow', 'height=10,width=100,left=10,top=10,resizable=no,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=no');    // Verstop op achtergrond
            popupWindow.blur();
        },5000
        );
    }
</script>
<a href="JavaScript:newPopup('print.php');">Print</a>