0

最初に、私はこの質問が他の質問と重複していることを知っていました。しかし、私はstackoverflowの多くの問題から多くのサンプルをフォローしようとしましたが、うまくいきませんでした。iframeからメインウィンドウの関数を呼び出すことができませんでしたが、フレームタグを使用すれば機能します。

こんな感じでやってみました。

メインウィンドウ:

<body>
<iframe src='test.html'></iframe>
<script>            
    var alertFunc = function(){
        window.alert("work!");
    }   
</script>
</body>

test.html

<body>
    <input type="button" onclick="window.parent.alertFunc();" value="Test" />
</body>

コンソールからのエラーメッセージ。

Unsafe JavaScript attempt to access frame with URL file:///C:/.../index.html from frame with URL file:///C:/.../test.html. Domains, protocols and ports must match.
 test.html:30
Uncaught TypeError: Cannot call method 'alertFunc' of undefined 

そしてこれに似た多くの形。

あなたはなにか考えはありますか?または私は何か間違ったことをしましたか?

4

1 に答える 1

0

c:.....\page.htmlのようにファイルシステムから直接ファイルにアクセスしているようです。

同一生成元ポリシーによるエラー。サイトをTomcatまたはローカルファイルシステムからアクセスする以外のWebサーバーにデプロイすると、両方のファイルが同じドメインスペースからのものであると想定して機能するはずです。

メインページ(iframeを含む)とiframeページが同じディレクトリにある場合、またはiframeページがメインページディレクトリのサブディレクトリである場合、FireFoxで機能します。

上記はクロームでは機能しません。フラグでクロームを開始する必要があります --allow-file-access-from-files

于 2013-03-15T03:04:36.493 に答える