【问题标题】:Javascript/jQuery: calling function in another frameJavascript/jQuery:在另一个框架中调用函数
【发布时间】:2010-08-17 09:29:44
【问题描述】:

我是 DOM 和 JavaScript 的新手,在尝试从顶级框架或 Firebug 的上下文调用框架中定义的函数时遇到了一些问题。

鉴于以下框架集:

<html>
    <body>
    <frameset cols="*" rows="81,*">
        <frame id="topFrame" tabindex="1" name="topFrame" noresize="noresize" scrolling="No" src="hometop.aspx"/> 
        <frameset border="0" cols="214,*" frameborder="no" framespacing="0">
            <frameset border="0" cols="*" frameborder="no" framespacing="0" rows="70,*">
                <frame tabindex="-1" id="chatFrame" name="chatFrame" scrolling="No" noresize="noresize" src=""/>
                <frame tabindex="-1" id="leftFrame" name="leftFrame" noresize="noresize" src="leftFrame.aspx"/>
            </frameset> 
            <frame tabindex="-1" id="mainFrame" name="mainFrame" src=""/>
        </frameset> 
        <noframes>Your browser does not support frameset.</noframes> 
    </frameset>
    </body>
</html>

我正在尝试编写一个 javascript 挂钩,该挂钩将在第一次打开上述文档时调用 #leftFrame 中定义的 javascript 函数。我正在加载 jQuery 的 Firebug 会话中执行此操作。

jQuery("#leftFrame") 返回一个框架 DOM 元素。现在我想在框架的上下文中执行我的函数(openLink,在 leftFrame.aspx 中的普通旧脚本标记中定义)。我的理解是该函数将是 leftFrame 的文档元素下的一个 DOM 节点。但是我无法获取框架的文档。

我试过了:

 jQuery("#leftFrame").document
 jQuery("#leftFrame").contentDocument
 jQuery("#leftFrame").find("html")

此外,在 Firebug 中检查 DOM 树时,我无法在任何 DOM 节点下看到 openLink 函数,正如我所期望的那样。

谁能帮帮我?

【问题讨论】:

    标签: javascript jquery frames


    【解决方案1】:
    $('#leftFrame')[0].contentWindow.document
    $('#leftFrame')[0].contentWindow.functionName()
    

    以上应该可以。 jQuery 的 contents() 仅适用于 iframe 节点,因此您必须像这样引用它。

    【讨论】:

    • contentWindow 是一个 IE 扩展,直到 HTML5 才标准化,并且在其他浏览器的旧版本中存在支持问题。通常,您应该首先在存在长标准contentDocument 属性时分支代码(并在其上使用defaultView 以获取关联的window),对于IE6-7 回退到contentWindow
    猜你喜欢
    • 2018-07-21
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2019-04-24
    • 2015-08-31
    • 1970-01-01
    相关资源
    最近更新 更多