使用对象标记的PDF Viewer不适用于Edge



我正在尝试使用对象标记内联显示PDF文档-它在Chrome和Firefox中正常工作,但在Edge中不起作用。

样本代码:

  <object id="pdfObj" data="http://www.pdf995.com/samples/pdf.pdf" type="application/pdf" target="_parent">
  </object>

Plunker:http://plnkr.co/edit/wH9ECcwkx3vHFv43xTo5?p=preview

在Edge中显示PDF查看器的好方法是什么?谢谢你的帮助。

我也遇到过类似的问题。对象标签在IE和EDGE中表现不同;服务器需要接受对象标签发出的HEAD请求(HEAD请求:仅在IE&EDGE中)并给出响应,然后发出获取请求以获取文件。这是微软浏览器的一个限制。

编辑1:如果我将数据属性中带有url的对象标签html添加到dom,而不是使用javascript设置已经在dom上的对象标签的属性值,这对我来说很有效(EDGE和IE也是)。请注意,我有一个端点刷新响应,这会更新数据属性的值。

我用text/html/strong>替换了type属性的值。

<object id="pdfObj" data="http://www.pdf995.com/samples/pdf.pdf" type="text/html" target="_parent"></object>

此方法适用于Edge和IE11。
<对象>请求包含html:

<!doctype html>
<html>
    <body style='height: 100%; width: 100%; overflow: hidden; margin:0px; background-color: rgb(82, 86, 89);'>
        <embed style='position:absolute; left: 0; top: 0;'width='100%' height='100%' src='about:blank' type='application/pdf' internalid='5BD5603FA794B387B2B97F624FB9ABDE'></embed>
    </body>
</html>

Edge和IE11可能会检查响应内容并屏蔽它,因为它不是pdf
pdf位于<嵌入>响应。

type设置为text/html/strong>在这种情况下适用于我的浏览器:

  • Firefox
  • IE11
  • Edge
  • Opera

我不尝试Safari。

我希望这个答案对你有帮助,我的英语没有太多困扰你

在修复错误之前,更改数据在EDGE中是不起作用的。我找到了一个变通方法,删除该元素并向其父元素添加一个新元素。它可能不适用于所有情况,但它对我有效。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript">
        function loadPdf() {
            var viewer = document.getElementById("ScanPdf");
            var parent = viewer.parentElement;
            var newViewer = document.createElement("object");
            viewer.remove(); 
            newViewer.setAttribute("data", "your new url here");
            newViewer.style = oldStyle;
            parent.appendChild(newViewer);
        }
    </script>
</head>
<body>
<object width="1080" height="1080" id="ScanPdf" data="old url here"
        type="application/pdf" scanitemid="2317">ffff</object>
<button onclick="loadPdf()">LOAD PDF</button>
</body>
</html>

最新更新