Html 在对象标记中显示PDF文件

Html 在对象标记中显示PDF文件,html,knockout.js,durandal,Html,Knockout.js,Durandal,我需要在使用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:1

我需要在使用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时,它就工作了。不知道为什么它没有通过我的主应用程序显示。有什么建议吗


谢谢。

这是因为浏览器处理动态标记的方式不一致,而且这种标记通常是由ActiveX控件实现的,而ActiveX控件不侦听对象标记的更改

2种选择:

  • 使用iframe并将其指向您的PDF。这将导致浏览器以本机方式处理PDF(例如,Chrome使用自己的引擎显示PDF,Firefox使用JavaScript库显示PDF,IE使用ActiveX…)

  • 如果PDF发生更改,只需删除对象标记并在其位置写入新标记,而不是绑定对象标记的数据。浏览器可以很好地接收对DOM的更改


  • 嘿,看看另一个stackoverflow答案:嘿,谢谢你,马克。。!刚刚试过,效果很好。只是出于好奇,标签有任何已知问题吗?