10

私は JavaScript が初めてで、埋め込まれた iframe から変数の値を取得しようとしています。メソッドが正しいことを確認するために、基本的なテストに頼りました...

一般的な提案を試しましたが、すべてが「未定義」を返します。onclick イベントで変数を使用したい。

iframe コンテンツでは、すべてを削除しました。テスト用に次のようにします。

<script>
var test = "test";
</script>

親ウィンドウでこれを行いました:

<iframe src="iframe.html" id="iframe" width="200" height="100"></iframe>

<script>
var myVar = window.frames[0].window.test;
</script>
<a href="#" onclick='alert(myVar)' id="link">Click</a>

ここで提案されているオプションを試しました:埋め込み iframe からグローバル変数を取得します

私が行うことはすべて未定義を返します...根本的に間違ったことをしていますか?

前もって感謝します..

4

4 に答える 4

12

<iframe>がまだロードされているときに、すでにスクリプトを実行しているので、それtestundefinedです。iframe のイベントを待つかload、クリック時に変数を取得します。

<iframe src="iframe.html" id="iframe" width="200" height="100"></iframe>

<script>
var myFrame = window.frames[0].window;
</script>
<a href="#" onclick='alert(myFrame.test)' id="link">Click</a>
于 2013-01-16T20:14:56.707 に答える
8

にアクセスする前に、フレームのコンテンツがロードされるのを待っていないようですmyVar。その場合、フレーム内の<script>要素がまだフェッチまたは実行されていない可能性があります。

フレームのコンテンツが完全に読み込まれるまで、変数の割り当てを遅らせてみてください。

<iframe src="iframe.html" id="iframe" onload="frameLoaded();" width="200" height="100"></iframe>

<script>
    var myVar;
    function frameLoaded() {
        myVar = window.frames[0].window.test;
    }
</script>

余談ですが、あなたの質問にはというタグが付けられているので、次のように書くことをお勧めします。

<iframe src="iframe.html" id="iframe" width="200" height="100"></iframe>

<script>
    $("#iframe").on("load", function() {
        var myVar = this.window.test;
        $("#link").on("click", function() {
            alert(myVar);
        });
    });
</script>
于 2013-01-16T20:15:08.877 に答える
3

これを使ってみてください

 <iframe src="iframe.html" id="iframe" onload="loader()" width="200" height="100">    </iframe>

<script>
    var myVar
    function loader(){
        myVar = window.frames[0].window.test;
    }
</script>
<a href="#" onclick='alert(myVar)' id="link">Click</a>
于 2013-01-16T20:24:54.783 に答える
0

余談ですが、jquery onload イベント ハンドラ関数を使用し、jquery の「this」オブジェクトにアクセスする場合は、$(this.attr) 表記を使用する必要があることを指摘したいと思います。

于 2013-05-14T20:48:37.320 に答える