2013-07-12 79 views
2

我嘗試了很多次和很多方法從iframe中調用方法,但尚未成功。請參閱下文,如何訪問Iframe的父窗口的方法[Chrome瀏覽器]

  1. main.html :由兩個iframe中

  2. IFRAME-1與來自其中i想調用的main.html中的方法或希望的index.html鏈接到改變第二的src iframe中。

main.html中

<html> 
    <head> </head> 
    <body> 
    <iframe id="iframe-1" src="index.html"></iframe> 
    <iframe id="iframe-2" ></iframe> 
    </body> 
</html> 

的index.html

<html> <head> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    // How to access the method of main.html and change the iframe src 
}); 
</script> 
</head> <body> 
    ...... 
</body> </html> 

注:試圖parent.methodName()window.parent.methodName()不工作

@EDIT:蘇CCESS在IE & MOZILLA,但得到的錯誤在Chrome(無法調用未定義 '的getElementById')

+0

@ Ron的解決方案正在Mozilla和IE瀏覽器上工作,但我在Chrome上遇到錯誤 – user1010399

回答

1

你應該

document.getElementById("iframe-1").contentWindow.func(); 

var $f = $("#myIFrame"); 
var fd = $f[0].document || $f[0].contentWindow.document; // document of iframe 
fd.MyFunction(); // run function 

Docs

+0

感謝@Baadshah,但我的問題是要訪問主窗口方法或更改同級iframe的src。 – user1010399

1

指數試試.html

<html> 
<head> 
    <script type="text/javascript"> 
     function run() { 
      window.parent.document.getElementById("iframe-2").src = "/test.html"; 
     } 
    </script> 
</head> 
<body onload="run();"> 
</body> 
</html> 

這個怎麼樣?

或者在main.html中創建一個方法並使用它: window.parent。 methodname();

Ron。

ps。 window.parent。 methodname();完美的作品對我來說,當我在main.html中

main.html中

<html> 
    <head> </head> 
    <script> 
     function foo() { 
      alert(1); 
     }  
    </script> 
    <body> 
     <iframe id="iframe-1" src="index.html"></iframe> 
     <iframe id="iframe-2" ></iframe> 
    </body> 
</html> 
+0

當您描述從main.html訪問iframe的方法時,我想從'index.html'而不是'main.html'進行訪問,並且這不是我的問題的解決方案。 – user1010399

+0

我澄清了我的帖子,因爲我認爲這正是你想要的。從index.html中訪問方法或IFRAME(在main.html中聲明)。 – Ron

+0

謝謝羅恩。是的,它可以在Mozilla和IE瀏覽器上運行,而Chrome會發生錯誤。我一直在檢查鉻,我應該早些時候在IE和Mozilla上檢查它。任何想法的Chrome? – user1010399

1

我保持這個短有一個方法。

由於您正在期待同一文檔[窗口共享]上的iframes/frame。訪問另一個文檔中的一個文檔中定義的變量。您必須按照DOM 2使用document.importNode(原始節點,如其他文檔中的布爾值)方法。 對於javacript代碼執行此類操作...

iframe=document.getElementsTagName("iframe")[0]; 

documentI(原始變量/節點在座) -

OriginalNode=iframe.contentWindow.document.getElementsByTagName(//Tag name of Node//) 

documentII(節點這裏要克隆) - iframe.contentWindow.document.importNode(OriginalNode,True)

節點可以由任何方法,屬性或對象在被創建任何iframe通過簡單的DOM方法。 這將工作

相關問題