Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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_Iframe - Fatal编程技术网

与页面内的iframe共享页面的全局javascript变量

与页面内的iframe共享页面的全局javascript变量,javascript,iframe,Javascript,Iframe,我有一个场景,其中我有一个页面,其中有标记和一些全局javascript变量。我在该页面中还有一个iframe,我想在iframe中访问该页面的全局javascript变量 有可能吗?如果有,我怎么做?通过调用iframe脚本中的parent.your_var_name来轻松实现 一个条件:两个页面(main和iframe)必须位于同一个域上 主页: <script> var my_var = 'hello world!'; </script> var my_var

我有一个场景,其中我有一个页面,其中有
标记和一些全局javascript变量。我在该页面中还有一个iframe,我想在iframe中访问该页面的全局javascript变量


有可能吗?如果有,我怎么做?

通过调用iframe脚本中的parent.your_var_name来轻松实现

一个条件:两个页面(main和iframe)必须位于同一个域上

主页:

<script>
 var my_var = 'hello world!';
</script>

var my_var=‘你好,世界!’;
iframe

<script>
  function some_fn(){
    alert(parent.my_var); //helo world!
  }
</script>

函数some_fn(){
警报(parent.my_var);//helo world!
}

如果iframe和主文档不在同一域中(由于跨域安全策略),则不可能执行此操作

要绕过此限制,可以使用跨域消息传递

如果主文档位于同一域中,则可以访问其全局变量。存在属于iframe或主页的窗口对象的对象

下面是从同一域中的主文档(或iframe)访问iframe变量myvar的代码:

document.getElementById('iframeid').contentWindow['myvar'];

上面的答案很好。要补充一点,请注意ES6中的这一点:

 <script>
 const my_var2 = 'hello world!';
 let   my_var3 = 'hello world!';
 </script>

const my_var2=‘你好,世界!’;
让我的_var3=‘你好,世界!’;
如果在主页中使用上述内容,则不能在iframe中引用my_var2或my_var3。您必须使用“var”来实现这一点

这是因为“const、let和class不在全局对象上创建属性”


请参阅:

为clear idea提供一些示例代码。谢谢,刚刚意识到我的javascript有多糟糕:p从父级调用函数时要小心,当它们引用窗口或文档时,它们使用的是父级窗口或文档,而不是iframe中的。谢谢您的时间!顺便说一句,我想访问iframe上的页面变量,你告诉了我相反的内容。看到相反的内容仍然非常有用。你能澄清一下在这个上下文中的“跨域消息传递”吗?@Z.Khullah我想他是指。