【问题标题】:How to deep clone the window?如何深度克隆窗口?
【发布时间】:2019-08-25 07:47:44
【问题描述】:

我正在尝试克隆窗口。我为此使用了 lodash。 Lodash 没有用,因为它给我带来了空对象。我已经尝试过this link 上的方法。他们都没有工作。如何克隆窗口?

let w=_.cloneDeep(window);// w={}

//test
console.log(window.console===w.console);

【问题讨论】:

  • 是否对window 进行了一些修改,还是仍处于原始“状态”?
  • @humanityANDpeace 我不知道是否进行了任何更改。我在 Tampermonkey 中使用它,并且该站点删除了窗口功能。例如,console.log 不起作用。所以我正在尝试克隆窗口。
  • 我曾经有兴趣通过删除一些函数来“沙盒”(参见stackoverflow.com/q/53666880/1711186)一些javascript。基本上,您可以通过插入 iframe 获得另一个 - 可能“未受割礼”window-,这可能会帮助您获得 console.log?
  • 抱歉,更相关的问题是这个Assuming I deleted window.alert, how would I get it back?
  • 我认为这不是一个通用的解决方案。因为 dispatchEvent 不起作用,并且可能还有其他我不知道的不起作用的功能。我的想法是将窗口克隆到一个变量中,然后将其克隆到窗口中。

标签: javascript google-chrome lodash clone deep-copy


【解决方案1】:

嗨 :) 我找到了解决方案。 你应该使用cloneDeepWith

const customizer = (value) => {
 return value
}

let w = _.cloneDeepwith(window, customizer)

console.log(window.console === w.console) // will true

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2017-09-17
    • 2017-09-01
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多