【问题标题】:Open a PDF from Edge without opening redundant blank tabs从 Edge 打开 PDF 而不打开多余的空白选项卡
【发布时间】:2017-02-20 23:41:31
【问题描述】:

我正在处理的页面列出了文档。每个文档都是一个可点击的链接。单击会打开一个 PDF(通常会在不同的选项卡,甚至不同的应用程序中打开,具体取决于用户的设置),然后重新加载原始选项卡,以便更新页面上的“未读”计数并将链接样式更改为表示“阅读”。

围绕文档详细信息的 HTML 范围:

<span class='btn-link' onclick='openReport(@orderNumber, @tableBodyId); return false;'>

Javascript:

function openReport(orderNumber, tableBodyId) {
    var url = "/Reports/ValuationReportDocPdf?orderNumber=" + orderNumber;
    var win = window.open(url, '');
    setTimeout(function () { location.reload(); }, 3000);
}

Javascript 在 Chrome、Firefox 和 IE11 中按预期工作。

在 Edge 中,单击链接时,会打开一个空白选项卡并获得焦点,而原始选项卡在选项卡栏上闪烁,等待我在“保存”、“另存为”和“取消”之间进行选择。因此,用户必须返回原始选项卡才能继续。这是一个相当混乱的用户体验。然后,如果我单击“保存”,情况会变得更糟:打开包含 PDF 的第三个选项卡。

问题

如何让 Edge 发挥出色?我希望将焦点停留在原始页面上,直到用户选择如何处理 PDF,然后打开 PDF,而不打开任何空选项卡。

编辑

This post 似乎相关,但它使用&lt;a&gt;。我认为我不能使用锚点,因为我还需要刷新页面。

【问题讨论】:

    标签: javascript asp.net-mvc microsoft-edge


    【解决方案1】:

    我找到了some help 这个。对于Edge only,我动态地创建一个带有download 属性的&lt;a&gt;,然后“单击”它。

    function openReport(orderNumber, tableBodyId) {
        var url = "/Reports/ValuationReportDocPdf?orderNumber=" + orderNumber;
    
        if (isEDGE()) {
            var dl = document.createElement('a');
            dl.setAttribute('href', url);
            dl.setAttribute('download', 'filename.txt');
            dl.click();
        } else {
            window.open(url, '');
        }
    
        setTimeout(function () { location.reload(); }, 3000);
    }
    
    function isEDGE() {
        return /Edge\/\d./i.test(navigator.userAgent);
    }
    

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      相关资源
      最近更新 更多