将锚点href设置为" blob的问题:"使用" _blank"的目标的网址在Chrome中

时间:2017-03-17 15:05:03

标签: javascript html google-chrome pdf blob

我正在开发一个网站,允许用户下载页面的PDF版本。当前的解决方案是将生成的HTML呈现为服务器上的PDF,从而返回Base64编码的PDF作为结果。 Blob是根据此数据创建的,后跟ObjectURL,如下所示: -

{{1}}

然后将 dataURL (格式为" blob:http://www.example.com/abcd1234-abcd-abcd-abcd-abcd1234efa ")分配给 href 锚标记的属性。 目标属性也设置为" _blank"以便在新选项卡中打开生成的PDF。

直到大约一周前,这个工作一直很好。在Firefox中,一切仍然有效,但在Chrome中存在问题。单击链接时,快速打开选项卡,然后立即关闭。删除目标属性会导致所有内容正常工作,尽管PDF已加载到当前标签中,这不是我想要的。没有任何东西记录到控制台,所以我没有从那里得到任何线索。

有没有人知道为什么会这样?由于这刚刚开始发生,我认为这是最新版Chrome的问题(我在Linux上运行57.0.2987.98(64位),尽管一位同事在Windows上也遇到了同样的问题10)。

编辑: 我刚刚创建了一个CodePen示例来演示:https://codepen.io/anon/pen/OpOGbE

单击按钮,应生成两个链接。第一个应该在同一页面中正常打开。第二个在新标签中打开,但不在Chrome中(对我而言,它显示与上述相同的行为)。

在运行此测试时,我发现在隐身窗口中问题似乎不存在,并且新标签正确打开...

1 个答案:

答案 0 :(得分:3)

这似乎是Chrome中的一个临时错误。截至撰写本文时,Chrome的代码works with current Canary (beta)版本(v.59.0.3044.1)。

作为一种临时解决方法,您可以尝试使用原始Base-64数据,并在其前面添加data-uri标头,然后将其用作href的源代码:

urlVar = "?chartColor=blue&chartWidth=600"