【问题标题】:Changing the global scope in JS更改 JS 中的全局范围
【发布时间】:2015-06-04 14:49:49
【问题描述】:

假设我有一个Iframe 在父窗口内运行。

我在Iframe 中加载了一个脚本,我希望该脚本能够访问其父级中的变量。

与其一直说window.parent.X,不如直接声明:

window= window.parent;

Iframe 的内部?

【问题讨论】:

  • 设置全局标识符 window 不起作用。您可以创建一个隐藏它的闭包,也可以使用不同的标识符,例如var pwind = window.parent
  • @PaulS。你能举一个例子来说明“创建一个隐藏它的闭包”的意思吗?我对 JS 比较陌生。

标签: javascript iframe window


【解决方案1】:

window 是 js 的受保护变量,您将无法覆盖它。但是,您可以将 window.parent 存储在另一个 var 中,然后使用它:

var parentWindow = window.parent;

【讨论】:

    【解决方案2】:

    你能举例说明“创建一个遮蔽它的闭包”是什么意思吗

    // `window` here works normally
    
    (function (window) {
        // `window` here is what would be `window.parent`
    }(window.parent));
    
    // `window` here works normally
    

    请注意,即使在 IIFE 的闭包中,您仍然拥有相同的全局对象,即您无法通过 window 访问的任何内容都不会来自父窗口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-06
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 2011-03-17
      • 2014-02-22
      相关资源
      最近更新 更多