【问题标题】:How to stop browser popup blocker when using window.open使用 window.open 时如何停止浏览器弹出窗口阻止程序
【发布时间】:2017-05-17 17:14:09
【问题描述】:

我正在打印从后端检索到的 html。

 printHtml(htmlTemplate) {
    var printWindow = window.open('', '_blank');
    printWindow.document.write(htmlTemplate);
    setTimeout(function () {
        printWindow.document.close(); // necessary for IE >= 10
        printWindow.focus(); // necessary for IE >= 10*/
        printWindow.print();
        printWindow.close();
    }, 1000);
}

这在所有浏览器中都可以正常工作,唯一我不知道的是如何停止弹出窗口阻止程序。 无法使用 printWindow.location,因为 html 存在于变量中。

【问题讨论】:

  • 你是如何打开这个弹出窗口的?在用户操作或其他事情之后? “如果打开选项卡/弹出窗口的命令来自受信任的事件,浏览器只会打开一个选项卡/弹出窗口,而不会发出弹出窗口阻止程序警告。”请参阅this question了解更多详细信息。
  • @abhishekkannojia 我通过单击按钮触发此操作并打开浏览器打印窗口。

标签: javascript jquery typescript browser cross-browser


【解决方案1】:

对于遇到相同问题的任何人,
问题是我在 promise 中调用了这个方法,完成后, window.open 有一个新的窗口实例,导致弹出窗口阻止程序。 这在我分配时效果很好,

var printWindow = window.open('', '_blank');

在进入 Promise 并在方法中使用它之前先到一个全局变量。

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 2011-06-03
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    相关资源
    最近更新 更多