我是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 函数。
任何人都可以帮助我吗?
答案 0 :(得分:7)
$('#leftFrame')[0].contentWindow.document
$('#leftFrame')[0].contentWindow.functionName()
以上应该有效。 jQuery的contents()
仅适用于iframe节点,所以你必须像这样引用它。