我有一个场景,其中有一个页面,其中包含<script>标签和一些全局 javascript 变量。我在该页面中还有一个 iframe,我想在 iframe 中访问页面的全局 javascript 变量。
有可能吗?,如果是,我该怎么做?
我有一个场景,其中有一个页面,其中包含<script>标签和一些全局 javascript 变量。我在该页面中还有一个 iframe,我想在 iframe 中访问页面的全局 javascript 变量。
有可能吗?,如果是,我该怎么做?
通过在 iframe 的脚本中调用 parent.your_var_name 很容易。
一个条件:两个页面(主页面和 iframe 的)必须在同一个域中。
主页:
<script>
var my_var = 'hello world!';
</script>
内嵌框架
<script>
function some_fn(){
alert(parent.my_var); //helo world!
}
</script>
如果iframe 和主文档不在同一个域中(由于跨域安全策略),则不可能。
要绕过此限制,您可以使用跨域消息传递。
如果iframe 主文档在同一个域中,则可以访问它们的全局变量。有属于 iframe 或主页的 window 对象的对象。
这是从同一域中的主文档(或 iframe) 访问 iframe 变量myvar的代码 :
document.getElementById('iframeid').contentWindow['myvar'];
上面的答案很好。补充一点,在 ES6 中要注意这一点:
<script>
const my_var2 = 'hello world!';
let my_var3 = 'hello world!';
</script>
如果在主页中使用上述内容,则不能在 iframe 中引用 my_var2 或 my_var3。您必须使用“var”来完成此操作。
这是因为“const、let 和 class 不会在全局对象上创建属性”。