javascript frame navigation in ie11 with a pdf

夙愿已清 提交于 2019-12-10 14:58:24

问题


I have a simple web page where 1 frame displays a pdf and another a menu bar.

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

Using chrome I can navigate from the menu bar to the parent and back down to the frame containing the pdf in order to print it

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

Attempting to do the same in IE11 gives an Invalid calling object error.

you can see this at http://www.abhrdev.co.uk/main.html

What am I doing wrong / what is IE doing differently?

Cheers

Updated.....

I think I have proved that this is not a javascript coding issue but related to the pdf handling in IE. With the following page

<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>

and this function

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

the printing of the html page works but not the pdf the pWindow.focus() gives Invalid Calling Object - any insight into why that might be greatfully recieved


回答1:


After trying several things, I finally go this to work in IE11:

1) use an object tag instead of iframe

2) run focus() / print() directly on the element

3) run after a timeout, to make sure everything in is loaded. There may be a better way (like using some event listener) to do this, as the timeout time needs to be fairly long for it to work properly

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

Object (with a specified id) instead of iframe:

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

Note: doesn't work in chrome. One of the other variations in the other answers (i.e. using ContentWindow) may.




回答2:


Try actually using the window.frames to get the frameList and reference it by the frame name that way.

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();



回答3:


Try this

<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();  


来源:https://stackoverflow.com/questions/25870970/javascript-frame-navigation-in-ie11-with-a-pdf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!