spe*_*.sm 4 html pdf compatibility google-chrome hyperlink
我注意到,如果我创建一个 PDF 的超链接,target="_blank"它就无法正确打开。它会打开一个新选项卡,但不会加载 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>
Run Code Online (Sandbox Code Playgroud)
Chrome v.42 的视频以及 v.43 的问题:
https://youtu.be/v_EAedODKfA
该问题似乎是由具有该sandbox属性的 iframe (如 JSFiddle)引起的,因为此类 iframe 外部的链接不会发生此问题。可以使用以下 HTML 文件在 JSFiddle 外部重现该问题。
框架.html:
<iframe sandbox="allow-same-origin allow-forms allow-popups allow-scripts" src="content.html"></iframe>
Run Code Online (Sandbox Code Playgroud)
内容.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>
Run Code Online (Sandbox Code Playgroud)
使用这些沙箱值,默认目标_blank和_topall 都无法渲染 PDF,默认无法在 iframe 中渲染,并且_blank打开_top一个新选项卡失败(_top由于沙箱而打开一个新选项卡)。
如果我们添加allow-top-navigation沙箱值,我们就可以按_top预期工作。
<iframe sandbox="allow-same-origin allow-top-navigation allow-forms allow-popups allow-scripts" src="content.html"></iframe>
Run Code Online (Sandbox Code Playgroud)
但是,打开的新选项卡_blank仍然无法渲染 PDF。即使我在 MDN 上添加了所有沙箱放松属性,问题仍然存在(并不是我期望添加会allow-pointer-lock执行任何操作)。
<iframe sandbox="allow-same-origin allow-top-navigation allow-forms allow-popups allow-scripts allow-pointer-lock" src="content.html"></iframe>
Run Code Online (Sandbox Code Playgroud)
_blank我可以在 Chrome 43 的 iframe 中工作的唯一方法是sandbox完全删除该属性。
<iframe src="content.html"></iframe>
Run Code Online (Sandbox Code Playgroud)
现在默认目标_blank和_top按预期工作。
不幸的是,删除该sandbox属性并不是一个解决方法。如果您首先使用它,那么您可能需要它。我不能肯定地说在沙盒 iframe 中阻止 PDF 文件没有安全原因,但用户体验使我相信这更有可能是一个错误。
我已经针对此问题打开了错误报告,链接回此问题:
https://code.google.com/p/chromium/issues/detail?id=505860
更新:事实证明这是一个设计的安全功能,因此它可能不会返回到 Chrome 42 行为,但将来可能会添加一个新的沙箱选项来放松此安全功能。
UPDATE-2:允许此功能的沙箱属性是“allow-popups-to-escape-sandbox”。更多信息请点击此处
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |