Ich versuche, ein PDF-Dokument in einer HTML-Ansicht einzubetten, wobei ein Knockout-ViewModel die URL für das Dokument bereitstellt. Ich glaube, dass das korrekte HTML-Element dafür `ist, daher habe ich folgende Ansicht:
und folgendes als ViewModel:
function AppViewModel() {
this.EmbedPDFLink = "http://acroeng.adobe.com/Test_Files/browser_tests/embedded/simple5.pdf";
}
ko.applyBindings(new AppViewModel());
jsFiddle
Dies zeigt das PDF in Chrome, Chrome Canary (beide verwenden das native Chrome PDF-Plugin) und Firefox 27 (Adobe Reader XI-Plugin) an, allerdings zeigen alle drei Browser eine Warnung in einer Leiste oben auf dem Bildschirm an. Chroms ist gelb und besagt, dass es Could not load Chrome PDF Viewer, während die von Firefox grau ist mit einem Informationsicon und besagt, dass dieses PDF-Dokument möglicherweise nicht korrekt angezeigt wird. Der gleiche Code lädt das Plugin leer in IE9.
Wenn ich das data-bind-Attribut durch ein direktes data-Attribut ersetze, das die hart codierte URL für das PDF-Dokument enthält, wird es in Chrome und Firefox korrekt angezeigt, während IE9 überhaupt nichts anzeigt, nicht einmal das leere Plugin.
Ich habe auch versucht, das data-Attribut mithilfe eines -Elements innerhalb des zu setzen, und das hat in keinem dieser Browser funktioniert.
Ich habe auch versucht, ein -Tag zu verwenden, das ähnliche Ergebnisse liefert, aber in IE9 funktioniert, allerdings scheint dies nicht semantisch korrekt zu sein. Allerdings besagt die Embed-Element-Dokumentation, dass alle Attribute an das Plugin übergeben werden - da die Elemente so ähnlich sind, ist es wahrscheinlich, dass das data-bind-Attribut an die PDF-Plugins übergeben wird und dieses Problem verursacht?
Es scheint, dass der einzige Unterschied im Markup zwischen den hart codierten und data-bind-Versionen das Vorhandensein eines data-bind-Attributs im letzteren ist, also denke ich, dass dies das Problem mit den Plugins verursacht, da das data URL-Attribut korrekt gesetzt wird.
Gibt es eine Möglichkeit, das data-Attribut am Objekt mithilfe von Knockout zu setzen, ohne auch ein data-bind-Attribut zu hinterlassen? Gibt es einen anderen Weg, den jemand kennt, um dieses Problem zu vermeiden?
`