【问题标题】:Getting first visible iFrame within a window and printing it在窗口中获取第一个可见的 iFrame 并打印它
【发布时间】:2012-10-21 11:41:43
【问题描述】:

有点荒谬的情况...这仅适用于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。

有什么想法吗?


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

【问题讨论】:

    标签: javascript jquery iframe telerik radwindow


    【解决方案1】:

    大多数这些旧的 collections 在 javascript 中都有一个 method * 称为 item,所以试试这个:

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

    (*) 别奇怪,typeof window.frames.item 将是 'object'

    【讨论】:

    • 请注意,这适用于 IE,但不适用于 2018 年的 Chrome。Chrome 必须使用括号。
    【解决方案2】:

    你试过了吗

    document.getElementsByTagName('iframe')[0]
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多