我注意到如果我使用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
答案 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的行为,但未来可能会添加新的沙箱选项放松这个安全功能。