Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从同一域上的父窗口访问iframe中的JavaScript变量_Javascript_Jquery_Iframe - Fatal编程技术网

从同一域上的父窗口访问iframe中的JavaScript变量

从同一域上的父窗口访问iframe中的JavaScript变量,javascript,jquery,iframe,Javascript,Jquery,Iframe,我对JavaScript相当陌生,我正在尝试从嵌入的iframe中获取变量的值。我已经求助于基本测试,以确保我得到正确的方法 我尝试了常见的建议,所有的结果都是“未定义”。我想在onclick事件中使用该变量 在iframe内容中,我剥离了所有内容,仅为了测试: <script> var test = "test"; </script> var test=“test”; 在父窗口中,我完成了以下操作: <iframe src="iframe.html" id=

我对JavaScript相当陌生,我正在尝试从嵌入的iframe中获取变量的值。我已经求助于基本测试,以确保我得到正确的方法

我尝试了常见的建议,所有的结果都是“未定义”。我想在onclick事件中使用该变量

在iframe内容中,我剥离了所有内容,仅为了测试:

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

var test=“test”;
在父窗口中,我完成了以下操作:

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

var myVar=window.frames[0].window.test;
我尝试了这里建议的选项:

我做的每件事都返回未定义的。。。我是不是做错了什么


提前感谢。

仍在加载时,您已经在执行脚本,因此
测试
未定义的
。等待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>

var myFrame=window.frames[0].window;

在访问
myVar
之前,您显然没有等待加载帧的内容。执行此操作时,帧中的
元素可能尚未获取或执行

尝试延迟变量赋值,直到框架内容完全加载:

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

var-myVar;
函数frameLoaded(){
myVar=window.frames[0].window.test;
}
另一方面,由于您的问题带有标签,我建议您写下如下内容:

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

$(“#iframe”)。在(“加载”,函数()上){
var myVar=this.window.test;
$(“#链接”)。在(“单击”,函数(){
预警(myVar);
});
});
尝试使用此选项

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

var myVar
函数加载器(){
myVar=window.frames[0].window.test;
}

在旁白解决方案中,我只想指出,当您使用jquery onload事件处理程序函数并希望访问jquery“this”对象时,您必须使用$(this.attr)符号。

您的JS代码可能在iFrame完成加载之前运行。这两种方法都不起作用。对于普通JavaScript,我在firebug中得到一个错误,它说myVar没有定义,因此onclick事件不会发生。使用jQuery选项,firebug告诉我this.window.test是未定义的。@Faldinio,事实上,这是因为
myVar
在我的答案中是本地的。我不明白你想把它放在全球范围内。答案相应地更新了。老实说,我应该发现它是在函数中定义的,而不是在函数外部定义的,但我已经盯着同一个代码看了太久了!它确实适用于更新的答案。