作者 主題: 請教有關iframe父視窗抓取子視窗js內object的方法  (閱讀 6852 次)

0 會員 與 1 訪客 正在閱讀本文。

陽だまり

  • 懷疑的國中生
  • **
  • 文章數: 72
  • 性別: 男
  • 陽だまり
    • 檢視個人資料
請教一下各位先進,是否有方法可以於iframe的父視窗中
取得子視窗javascript內object的內容這樣
父視窗的原始碼如下:
代碼: [選擇]
<script>
function a(){
  alert(1)
}
</script>
<iframe src="main.htm" name="sample" width="800" height="600">

子視窗的原始碼如下:
代碼: [選擇]
<div class="test" onclick="parent.a()">abc</div>
<script>
test = new Object() ;
test.aaa = "1"
test.bbb = "2"
test.ccc = "3"
</script>

要在子視窗呼叫父視窗的function的話,只要在前面加上parent即可正常呼叫
那請教一下,在父視窗如何取得子視窗的test這個object的值呢  :'(

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
請教一下各位先進,是否有方法可以於iframe的父視窗中
取得子視窗javascript內object的內容這樣
父視窗的原始碼如下:
代碼: [選擇]
<script>
function a(){
  alert(1)
}
</script>
<iframe src="main.htm" name="sample" width="800" height="600">

子視窗的原始碼如下:
代碼: [選擇]
<div class="test" onclick="parent.a()">abc</div>
<script>
test = new Object() ;
test.aaa = "1"
test.bbb = "2"
test.ccc = "3"
</script>

要在子視窗呼叫父視窗的function的話,只要在前面加上parent即可正常呼叫
那請教一下,在父視窗如何取得子視窗的test這個object的值呢  :'(

直接用 iframe 的 name 就可以進入取得,像這樣..
代碼: [選擇]
<div class="test" onclick="alert(sample.test.bbb)">Click-Me</div>

陽だまり

  • 懷疑的國中生
  • **
  • 文章數: 72
  • 性別: 男
  • 陽だまり
    • 檢視個人資料
感謝Yamaka先進的回答!!!
這個問題之前找了好久一直找不到答案
終於獲得解答了,再次感謝!

備註一下
在子視窗的function也可以用這個方法來呼叫

剛一直打錯視窗名稱,還以為這個方法呼叫不到 :-X
« 上次編輯: 2012-05-06 10:27 由 陽だまり »

RickyShi

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
除了使用parent,其實還可以使用window.opener來穫取父窗口的上下文, 簡要闡述一下這幾個屬性的區別

1.opener:指用WINDOW.OPEN等方式創建的新窗口對應的原窗口。
2.top:
該變更永遠指分割窗口最高層次的瀏覽器窗口。
3.parent:
該變量指的是包含當前分割窗口的父窗口。如果在一個窗口內有分割窗口,而在其中一個分割窗口中又包含著分割窗口,則第3層的分割窗口可以用parent變量引用第2層窗口,用top引用頂層窗口。
對於窗體中的frame和iframe加載的頁麵元素來說。parent 返迴的時包含該iframe的頁麵窗口引用,top則返迴最上層的窗口引用,self當然返迴的仍然是自身的引用。
4. self,window都是穫取當前頁麵窗口自身對象的引用