我有一个简单的网页,其中 1 个框架显示 pdf,另一个框架显示菜单栏。
<iframe src="bar.html" name="menu" ></iframe>
<iframe src="doc.pdf" name="itempane" ></iframe>
使用 chrome,我可以从菜单栏导航到父级,然后返回到包含 pdf 的框架以便打印它
var pWindow = window.parent;
pWindow['itempane'].print();
尝试在 IE11 中执行相同操作会出现无效调用对象错误。
你可以在http://www.abhrdev.co.uk/main.html看到这个
我哪里做错了/IE 有什么不同之处?
干杯
已更新.....
我想我已经证明这不是 javascript 编码问题,而是与 IE 中的 pdf 处理有关。带有以下页面
<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>
还有这个函数
function printFromMain(paneName) {
var pWindow = window[paneName];
pWindow.focus();
pWindow.print();
}
html 页面的打印有效,但 pWindow.focus() 给出的 pdf 无效调用对象 - 任何关于为什么可能会收到的见解
最佳答案
在尝试了几件事之后,我终于在 IE11 中开始工作了:
1) 使用对象标签代替 iframe
2) 直接在元素上运行 focus()/print()
3) 在超时后运行,以确保加载了所有内容。可能有更好的方法(比如使用一些事件监听器)来执行此操作,因为超时时间需要相当长才能正常工作
setTimeout(function () {
var contentThingy = document.getElementById('itempane');
contentThingy.focus();
contentThingy.print();
}, 4000);
对象(具有指定的 id)而不是 iframe:
<object id="itempane" ... ></object>
注意:不适用于 chrome。其他答案的其他变体之一(即使用 ContentWindow)可能。
关于带有pdf的ie11中的javascript框架导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870970/