2014-09-16 13 views
5

Ich habe eine einfache Webseite, wo 1 Frame eine PDF-und eine andere eine Menüleiste anzeigt.Javascript Frame-Navigation in ie11 mit einem pdf

<iframe src="bar.html" name="menu" ></iframe> 
<iframe src="doc.pdf" name="itempane" ></iframe> 

Mit Chrom ich in der Menüleiste auf das übergeordnete navigieren können und wieder auf den Rahmen, um die pdf enthält, um es

var pWindow = window.parent; 
pWindow['itempane'].print(); 

Der Versuch, das gleiche in IE11 zu drucken zu tun, um eine ungültige ergibt Aufruf eines Objektfehlers

Sie dies bei http://www.abhrdev.co.uk/main.html

sehen kann, was mache ich falsch/was anders tut IE?

Prost

Aktualisiert .....

Ich glaube, ich habe bewiesen, dass dies kein Javascript Codierung Problem ist, sondern auf die pdf im Internet Explorer Handhabung im Zusammenhang. Mit der folgenden Seite

<a href="javascript:printFromMain('pdfpane');">Print PDF</a><br/> 
<a href="javascript:printFromMain('htmlpane');">Print HTML</a> 
<iframe src="bar_1.html" name="menu" ></iframe> 
<iframe src="doc.pdf" name="pdfpane" ></iframe> 
<iframe src="doc.html" name="htmlpane" ></iframe> 

und diese Funktion

function printFromMain(paneName) { 
var pWindow = window[paneName]; 
pWindow.focus(); 
pWindow.print(); 
} 

der Druck der HTML-Seite funktioniert, aber nicht die pdf der pWindow.focus() gibt ungültige Berufung Object - jeder Einblick, warum das sein könnte greatfully

erhielt tatsächlich
+0

minor Note auf Probe Link ... Ich glaube nicht, dass die Ursache Wurzel ist aber Ihre Seite ein '' Tag fehlt. – scunliffe

+0

@mplungjan Der Anruf kommt von einem iframe, also benötigt er den Elternteil. – epascarello

+0

danke sowohl Body-Tag hinzugefügt und Doctype ändern, um es aufzuräumen. Fenster ["Objektfenster"].drucken(); gibt Kann nicht die Eigenschaft 'print' von undefined oder null Referenz – BillB

Antwort

0

Versuchen sie, die window.frames mit der Frameliste zu bekommen und es durch die Frame-Namen auf diese Weise zu verweisen.

var pWindow = window.parent; //reference the parent from the iframe 
var ifr = pWindow.frames.itempane; //get the pdf frame from the frame list 
ifr.focus(); 
ifr.print(); 
+0

Dank Ich habe versucht, es gibt ähnliche Fehler – BillB

0

Versuchen Sie, diese

<iframe src="bar.html" name="menu" ></iframe> 
<iframe src="doc.pdf" ID="itempane" ></iframe> 


var otherPane = parent.document.getElementById("itempane"); 
otherPane.focus(); // OR 
otherPane.print(); // OR 

var doc = otherPane.contentWindow || otherPane.contentDocument; 
doc.focus(); 
doc.print(); 
+1

Dank ich versuchte alle diese gaben sie ähnliche Fehler – BillB

+0

Ich werde heute auf der 11 versuchen – mplungjan

1

Nach mehreren Dinge zu versuchen, ich dies schließlich gehen in IE11 zu arbeiten:

1) verwenden, um ein Objekt-Tag statt iframe

2) laufen focus()/print() direkt auf das Element

3) Nach einem Timeout laufen lassen, um sicherzustellen, dass alle Einlesen ist geladen. Es kann eine bessere Art und Weise sein (wie einen Ereignis-Listener), dies zu tun, als die Timeout-Zeit ziemlich lang sein muss, damit sie richtig

setTimeout(function() { 
    var contentThingy = document.getElementById('itempane'); 
    contentThingy.focus(); 
    contentThingy.print(); 
}, 4000); 

Objekt arbeiten (mit einer bestimmten ID) anstelle von iframe:

<object id="itempane" ... ></object> 

Hinweis: funktioniert nicht in Chrom. Eine der anderen Variationen in den anderen Antworten (d.h. unter Verwendung von ContentWindow) kann.