0

对于一个项目,我需要使用 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>

我找到了一些停止链接的代码,但是我在实现这些代码时遇到了问题,因为我已经将其称为弹出窗口。

4

3 回答 3

3

您可以使用标志:

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

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

于 2012-10-18T11:51:16.430 回答
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)不支持 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);

    // ...
}
于 2012-10-18T11:53:52.913 回答
-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>
于 2012-10-18T13:35:01.290 回答