0

我需要在使用 Durandal 框架构建的 SPA 应用程序中显示 pdf 文件。我正在利用“attr”敲除数据绑定在运行时提供此 pdf 文件的 url。

<object data-bind="attr: { data: DocumentUrl() }" type="application/pdf" style="width: 100%; height: 100%"></object>

发出的 html 正确显示标签,

<object data="http://127.0.0.1:10000/devstoreaccount1/documents/TradeOverview.pdf" type="application/pdf" style="width: 100%; height: 100%; margin-right: 0px; margin-left: 0px; display: block; opacity: 1;" data-bind="attr: { data: DocumentUrl() }" data-view="durandal/../../templates/TnC/TnCDetails" data-active-view="true"></object>

但是,pdf文件不会显示在浏览器中!当我在示例 html 文件中运行上面发出的 html 时,它可以工作。不知道为什么它没有通过我的主应用程序显示。任何指针?

谢谢。

4

1 回答 1

0

这是因为浏览器不一致地处理动态 <object> 标记,并且这些标记通常由不侦听对象标记更改的 ActiveX 控件实现。

2个选择:

  1. 使用 iframe 并将其指向您的 PDF。这将导致浏览器原生处理 PDF(例如,Chrome 使用自己的引擎显示 PDF,Firefox 使用 JavaScript 库显示 PDF,IE 使用 ActiveX...)。

  2. 如果 PDF 发生更改,无需对对象标签进行数据绑定,只需删除对象标签并在其位置写入一个新标签。浏览器可以很好地接受对 DOM 的更改。

于 2013-08-23T19:26:04.267 回答