Google文档查看器偶尔无法在iframe中加载内容

tha*_*guy 16 html iframe google-docs

我遇到了Google Docs查看器的问题,导致噩梦得以解决,因为它只会间歇性地发生.我正在寻找有关如何在每次iframe加载中制作内容的指导,而不会出现问题.

重现的步骤1)此页面是一个基本的HTML页面,其中包含h1标记和一个iframe,其中包含指向同一服务器上PDF的链接

http://bit.ly/1mqbuf7

2)加载页面时,pdf文档将在60%的时间内加载到iframe中.

3)如果你刷新10次左右,至少一次它将无法出现.Google首先返回307(当它工作时也会返回),然后返回204 - 无内容.当它工作时,它返回一个200,其中包含您在查看器中看到的内容.

我很难理解为什么它只会在某些时候没有明显的错误.这已在Google Chrome v 48.0.2564.103(PC)和Internet Explorer Edge v25.10586(PC)上经过测试并失败,但结果和失败频率相同.

任何指导将不胜感激.

iul*_*net 4

这本身并不能解决您的问题,但由于我遇到了同样的问题并且我最终找到了一个可接受的解决方案,我想我会分享它。

var $docViewer = $(`<iframe src="${newValue}" height="100%" width="100%"></iframe>`);
//If using modern browser, use and embed object
if (window.chrome || typeof (window.mozInnerScreenX) != "undefined")
  $docViewer = $(`<object width="100%" height="100%" data="${newValue}" type="application/pdf">
                    <embed src="${newValue}" type="application/pdf">
                        <p>This browser does not support PDFs.Please download the PDF to view it: <a href="${newValue}">Download PDF</a>.</p>
                    </embed>
                </object>`);
//Add the new viewer
$docViewer.appendTo($("#invoicePreview"));
Run Code Online (Sandbox Code Playgroud)

基本上,embed如果是现代浏览器,则使用现代浏览器,如果不是,则使用 gviewer。嵌入对象的行为与 google 文档查看器相同,它在 100% 的情况下都有效(没有加载失败),但由于 IE 和/或低端移动设备不支持它,因此请使用 google 文档查看器...我猜是渐进式增强。