通過使用.htaccess重寫可以輕鬆解決此問題。
演示:
A.創建在該目錄中名爲 「iframeContent /」 關於服務器1.
B.將一個目錄中的文件名爲index.php文件包含:
<html>
<head></head>
<body>
<script type="text/javascript">
parent.check();
</script>
</body>
</html>
這是iFrame的內容。它會在父級調用一個函數。
C.在該目錄下一個名爲索引文件在服務器上創建一個名爲 「iframeTesting_without-htaccess的/」 目錄2.
D.廣場。含有PHP:
<html>
<head></head>
<body>
<script type="text/javascript">
function check() {
alert("hello");
}
</script>
<iframe id="sidebnrId" name="sidebnr"
src="PATH-ON-SERVER-1/iframeContent/" frameborder="0"
height="500px" width="600px" scrolling="no"></iframe>
</script>
</body>
</html>
這簡直是父窗口的內容。請注意,iFrame內容位於另一臺服務器上(因爲在SERVER 1上)。 E.使用Web瀏覽器訪問「PATH-ON-SERVER-2/iframeTesting_without-htaccess /」 - >沒有任何反應:iframe無法訪問其父項的功能。
這裏是你如何能解決問題
F.創建一個名爲「iframeTesting_with-htaccess的/」在服務器2
G.將在該目錄中的另一個目錄中的index.php文件名爲包含:
<html>
<head></head>
<body>
<script type="text/javascript">
function check() {
alert("hello");
}
</script>
<iframe id="sidebnrId" name="sidebnr"
src="content-iframe/" frameborder="0"
height="500px" width="600px" scrolling="no"></iframe>
</script>
</body>
</html>
這一次的iFrame已經不直接指向CON帳號在SERVER 1上,但是位於同一臺服務器(服務器2)上的中間虛構目錄「content-iframe /」。
H.將在該目錄中的.htaccess文件:
Options +FollowSymLinks
RewriteEngine On
RewriteBase/
RewriteRule ^content-iframe/$ PATH-ON-SERVER-1/iframeContent/ [R,NC,P]
該文件的作用是任何接入到虛擬目錄的內容重定向服務器1.
I.重試,使用網絡瀏覽器訪問「PATH-ON-SERVER-2/iframeTesting_with-htaccess /」。這一次它會起作用。我希望它可以幫助:-)
This [post](http://stackoverflow.com/questions/5477324/iframe-calling-parent-javascript)提供了一個非常簡單的解決方案。 – craned