この問題は、 .htaccess書き換えを使用することで簡単に解決できます。
デモ:
A.サーバー1に「iframeContent/」という名前のディレクトリを作成します。
B.そのディレクトリに、以下を含むindex.phpという名前のファイルを配置します。
<html>
<head></head>
<body>
<script type="text/javascript">
parent.check();
</script>
</body>
</html>
これはiFrameのコンテンツです。親の関数を呼び出します。
C.サーバー2に「iframeTesting_without-htaccess/」という名前のディレクトリを作成します。
D.そのディレクトリに、以下を含むindex.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コンテンツが別のサーバーにあることに注意してください(サーバー1にあるため)。
E.Webブラウザを使用して「PATH-ON-SERVER-2/iframeTesting_without-htaccess /」にアクセスします->何も起こりません:iframeはその親の機能にアクセスできません。
問題を解決する方法は次のとおりです
F.サーバー2に「iframeTesting_with-htaccess/」という名前の別のディレクトリを作成します。
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がサーバー1のコンテンツを直接指すのではなく、同じサーバー(サーバー2)にある架空の中間ディレクトリ「content-iframe/」を指します。
H.そのディレクトリに以下を含む.htaccessファイルを配置します。
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^content-iframe/$ PATH-ON-SERVER-1/iframeContent/ [R,NC,P]
そのファイルの役割は、架空のディレクトリへのアクセスをSERVER1のコンテンツにリダイレクトすることです。
I.再試行し、Webブラウザで「PATH-ON-SERVER-2 /iframeTesting_with-htaccess/」にアクセスします。今回は動作します。お役に立てば幸いです:-)