如何在使用Google Doc嵌入PDF查看器时禁用弹出选项?

11
我正在使用以下代码通过iframe显示pdf,它运行良好。但我想禁用“弹出”选项(点击后在我的网页上以Google文档的形式在新标签页中打开我的pdf),该选项显示在缩放选项旁边的右上角。这可能吗?
目前我正在使用以下代码 -
<iframe src="http://docs.google.com/gview?url=http://example.com/files/myfile.pdf&embedded=true" style="width:600px; height:500px;" frameborder="0">

你找到解决方法了吗? - Zxxxxx
3个回答

9

可以使用sandbox来阻止iframe内的popup窗口工作。

<iframe 
    sandbox="allow-scripts allow-same-origin"
/>

allow-scripts:允许在iframe内运行JavaScript。
allow-same-origin:允许从Google Viewer加载文件。
如果没有allow-popups,当用户单击pop-out图标时,什么都不会发生。

来源:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe


我和楼主有同样的问题。我想要移除这个按钮,但由于跨域问题找不到方法;所以我真的希望这个能够解决,但事实并非如此。弹出窗口按钮仍然会打开一个新窗口。 - rolinger
纠正一下...这个是有效的!我在第一条评论之后意识到我将沙盒应用于了iFrame #1,而我正在测试iFrame #2。有没有办法在控制台中抑制“Blocked opening”消息? - rolinger
它确实起作用,但在浏览器控制台中我收到一个警告:具有allow-scripts和allow-same-origin的iframe可以逃离其沙盒限制 - 我不明白为什么如果两者结合起来与没有sandbox=时的效果相同,它仍然能够工作。是否有更有效的沙盒选项而无需警告? - rolinger

0
在您的页面上运行此JavaScript(使用jQuery示例),我假设所有客户端的类都相同。
$('.ndfHFb-c4YZDc-Wrql6b').remove();

你确定这段代码适用于第三方 iFrame 吗? - Ravinder Kumar
@RavinderKumar 不,它不会。 - Sourabh
该类将不同于以往,每次都会随机生成。同时,它无法用于第三方的 iframe。 - Nikz
6年后,控制整个弹出按钮的class="ndfHFb-c4YZDc-Wrql6b"仍然是相同的类。 - rolinger

0
以下解决方案可用于移除预览按钮。将此代码添加到您的iframe的onload函数中。它在iframe加载后生效。
var head = $("#iframe").contents().find("head");
var css = '<style type="text/css">' +
          '.ndfHFb-c4YZDc-Wrql6b{display:none}; ' +
          '</style>';
$(head).append(css);

它对我起作用了。也许在你的情况下类名不同,你可以更改头部的类名并重试。 - Pankaj Zade
如果这曾经有效,现在可能已经不再有效了。在Cordova应用中,由于“跨域”问题,修改<head>是被阻止的。除非你知道绕过这个问题的方法? - rolinger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接