从同一域上的父窗口访问iframe中的JavaScript变量
我对JavaScript相当陌生,我正在尝试从嵌入的iframe中获取变量的值。我已经求助于基本测试,以确保我得到正确的方法 我尝试了常见的建议,所有的结果都是“未定义”。我想在onclick事件中使用该变量 在iframe内容中,我剥离了所有内容,仅为了测试:从同一域上的父窗口访问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=
<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
在我的答案中是本地的。我不明白你想把它放在全球范围内。答案相应地更新了。老实说,我应该发现它是在函数中定义的,而不是在函数外部定义的,但我已经盯着同一个代码看了太久了!它确实适用于更新的答案。