我对JavaScript很新,我试图从嵌入式iframe中获取变量的值。我已经采用基本测试来确保我正确地使用该方法......
我尝试了常见的建议,一切都返回'undefined'。我想在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>
我已尝试过此处建议的选项:grab global variable from an embedded iframe
我所做的一切都是未定义的......我在做一些根本错误的事情吗?
提前致谢..
答案 0 :(得分:12)
当<iframe>
仍在加载时,您已在执行脚本,因此test
为undefined
。要么等待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>
答案 1 :(得分:7)
在访问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>
顺便说一句,由于您的问题被标记为jquery,我建议您写一些类似的内容:
<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>
答案 2 :(得分: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>
答案 3 :(得分:0)
在旁边的解决方案中,我只是想指出当你使用jquery onload事件处理函数并且你想访问jquery“this”对象时,你必须使用$(this.attr)表示法。