2010-08-17 41 views
3

我是DOM和JavaScript的新手,在嘗試從頂級框架或Firebug的上下文中調用框架中定義的函數時遇到了一些問題。Javascript/jQuery:在另一個框架中調用函數

鑑於以下框架:

<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函數上述文件首次打開時。我在Firebug會話中執行此操作,jQuery已加載。

jQuery(「#leftFrame」)返回一個框架DOM元素。現在我想在框架的上下文中執行我的函數(openLink,在leftFrame.aspx中的普通舊腳本標記中定義)。我的理解是,該函數將是leftFrame的文檔元素下的DOM節點。但是我無法掌握框架的文檔。

我已經試過:

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

而且檢查DOM樹在Firebug我看不到在任何DOM節點OpenLink公司功能我期望時。

任何人都可以幫我嗎?

回答

6
$('#leftFrame')[0].contentWindow.document 
$('#leftFrame')[0].contentWindow.functionName() 

以上應該工作。 jQuery的contents()僅適用於iframe節點,因此您必須像這樣引用它。

+3

'contentWindow'是一個IE擴展,在HTML5之前並未標準化,並且在其他瀏覽器的舊版本中有支持問題。通常,你應該首先在存在長標準contentDocument屬性的情況下分支代碼(並且使用'defaultView'來獲得關聯的'window'),並回落到IE6-7的'contentWindow'中。 – bobince 2010-08-17 09:51:42