新标签超链接到PDF

时间:2015-06-30 15:43:11

标签: html google-chrome pdf hyperlink compatibility

我注意到如果我使用target="_blank"创建指向PDF的超链接,则无法正确打开。它打开一个新选项卡,但不加载PDF,它只显示一个白色屏幕。我正在使用Google Chrome v.43。有没有人注意到这个问题或找到了解决方法?

我已经使用Safari和Firefox对此进行了测试,并且在将PDF打开到新选项卡时都没有任何问题。我还尝试在Chrome中禁用我的插件,并使用隐身模式而没有运气。

测试链接:http://jsfiddle.net/fkfxoho0/

<a href="http://static.googleusercontent.com/media/www.google.com/en/us/webmasters/docs/search-engine-optimization-starter-guide.pdf" target="_blank">Optimization Starter Guide</a>

Chrome v.42的视频,然后是v.43的问题:
https://youtu.be/v_EAedODKfA

1 个答案:

答案 0 :(得分:2)

该问题似乎是由the sandbox attribute的iframe(如JSFiddle)引起的,因为此类iframe以外的链接不会发生此问题。可以使用以下HTML文件在JSFiddle外部重现该问题。

<强> frame.html

<iframe sandbox="allow-same-origin allow-forms allow-popups allow-scripts" src="content.html"></iframe>

<强> content.html

<a href="https://www.adobe.com/enterprise/accessibility/pdfs/acro6_cg_ue.pdf">default</a>
<a href="https://www.adobe.com/enterprise/accessibility/pdfs/acro6_cg_ue.pdf" target="_blank">_blank</a>
<a href="https://www.adobe.com/enterprise/accessibility/pdfs/acro6_cg_ue.pdf" target="_top">_top</a>

使用这些沙盒值时,默认目标_blank_top都无法呈现PDF,默认情况下无法在iframe中呈现,_blank和{{ 1}}打开一个失败的新标签(_top因沙盒而打开一个新标签页。)

如果我们添加_top沙箱值,我们可以使allow-top-navigation按预期工作。

_top

但是,<iframe sandbox="allow-same-origin allow-top-navigation allow-forms allow-popups allow-scripts" src="content.html"></iframe> 打开的新标签仍无法呈现PDF。即使我在MDN上添加了所有沙盒放松属性,问题仍然存在(不是我希望添加_blank来做任何事情)。

allow-pointer-lock

我可以让<iframe sandbox="allow-same-origin allow-top-navigation allow-forms allow-popups allow-scripts allow-pointer-lock" src="content.html"></iframe> 在Chrome 43中的iframe内工作的唯一方法是完全删除_blank属性。

sandbox

现在默认目标<iframe src="content.html"></iframe> _blank按预期工作。

不幸的是,删除_top属性并不是一种解决方法。如果您首先使用它,您可能需要它。 我无法确定是否存在阻止沙盒iframe中PDF文件的安全原因,但是这样的用户体验让我相信这更可能是一个错误。

我已经针对此问题打开了一个错误报告,并回到了这个问题:

https://code.google.com/p/chromium/issues/detail?id=505860

更新:原来这是一个设计安全功能,因此可能无法恢复Chrome 42的行为,但未来可能会添加新的沙箱选项放松这个安全功能。