2

有点荒谬的情况...这仅适用于IE8及更低版本。

无论如何,我有一个 iFrame 出现(我无法控制/创建一个 ID),感谢 Telerik!

// The only way I can grab it specifically would be:
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
                                             // ^ you grab by ID in IE
var ifWin = iframe.contentWindow || iframe;

但是由于我没有ID,所以无法使用这种方法……我尝试了几种不同的方法,均未成功。

// tried either window. / or document.
document.frames.print();
window.frames.print();
document.frames[0].print();

我基本上只想抓住第一个 iFrame -> 并打印它

旁注window.print()适用于除 IE8 及更低版本之外的所有内容。对于 IE,它只打印外部/父窗口内容,而不是当前关注的 iFrame。

有什么想法吗?


更新:所以window.frames[2].print()IE 控制台中以某种方式工作(并抓取正确的帧)。当我尝试将此代码放入 Javascript 中时,我有完全相同的事情:window.frames[2].print()IE 将此代码解释为点符号 window.frames.2并且不起作用并返回为 null 或不是对象。在控制台中输入相同的点符号不起作用,只会给我“预期的;” (这没有任何意义)。

4

2 回答 2

5

你试过了吗

document.getElementsByTagName('iframe')[0]

我在 IE8 控制台中对此进行了测试,它可以工作(但它可能在您的更新中仍然存在问题)。

至于关于打印第一个可见iframe 的问题的另一部分,您可能需要查看 scrollX 和 scrollY 以及 offsetTop 和 offsetLeft,不是吗?

于 2012-10-31T22:29:57.980 回答
1

javascript 中的这些旧集合中的大多数都有一个方法* 称为item,所以试试这个:

window.frames.item(2).print();

(*) 不要奇怪,typeof window.frames.item'object'

于 2012-10-31T22:28:07.233 回答