【问题标题】:Can't find a cross-browser solution for printing from an iFrame找不到用于从 iFrame 打印的跨浏览器解决方案
【发布时间】:2014-04-26 04:59:38
【问题描述】:

我正在维护一个旧版应用程序,它试图在回发事件期间动态加载一些 javascript。 javascript 有一行尝试打印包含正在加载 javascript 的页面的 iFrame。换句话说,窗口具有 iFrame 的层次结构(我知道这是一场噩梦)。我的代码在一个 asp.net 页面中,该页面加载在一个 id 为“main”的 iFrame 中。因此,以下代码在 Firefox 中运行没有任何问题:

parent.frames['main'].print();

但是,我似乎找不到可以让 IE 打印的魔法咒语。我试过在上一行之前添加这一行:

parent.frames['main'].focus();

但是,这没有任何效果。这是层次结构的简化表示:

<page>
    <frameset>
        <frame id='content'/>
        <frameset>
            <frame id='menu'/>
            <frame id='main'/>
        </frameset>
    </frameset>
</page>

我在网上看到了很多关于此的内容,但是无法让它们中的任何一个在 IE、FF 上工作。

我使用的是 IE 10 和 FF 28

感谢您提供的任何建议。我在这上面浪费了太多时间。

【问题讨论】:

  • 我尝试了 parent.window.frames['main'].print(),但没有成功(我尝试了它之前的“焦点”语句)。由于我知道完整的层次结构,我决定尝试 window.top.frames['main'].print() ,当然,它适用于 FF 但不适用于 IE,我也尝试了 window.top.frames['main'] .contentWindow.print(),没有运气。我无法列出我尝试过的所有变体,但我想我已经尝试了所有变体。啊。 (为清楚起见,'main' 嵌套在侧框架集中,但没有其他框架,因此 window.top.frames['main'] 可以工作,即使 main 向下嵌套了几层)。

标签: javascript asp.net iframe


【解决方案1】:

好的。魔法咒语是:

window.parent.frames[0].print();

这似乎适用于 IE 和 FF。

有趣的是,window.parent.frames['main'].print() 在 IE 中不起作用。

好的。所以,那是我生命中永远不会回来的一天。

:-/

【讨论】:

    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 2016-03-31
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2011-03-05
    • 2016-05-30
    相关资源
    最近更新 更多