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 回答