我需要在使用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时,它可以工作。不知道为什么它没有通过我的主应用程序显示。有什么指针吗?
感谢。
答案 0 :(得分:0)
这是因为浏览器不一致地处理动态&lt; object&gt;标签,通常这些标签是由不监听对象标签更改的ActiveX控件实现的。
追求的两个选择:
使用iframe并将其指向您的PDF。这将导致浏览器本地处理PDF(例如,Chrome使用自己的引擎显示PDF,Firefox使用JavaScript库显示PDF,IE使用ActiveX ...)。
如果PDF更改,则不是对象标记进行数据绑定,而是删除对象标记并在其位置写入新标记。浏览器接受DOM的更改就好了。