代码之家  ›  专栏  ›  技术社区  ›  madprops

重置iframe的窗口对象

  •  0
  • madprops  · 技术社区  · 6 年前

    我有一个iframe,没有指定任何src。

    我使用以下代码使用javascript动态更改内容:

    let doc = Paste.render_iframe.contentWindow.document
    
    doc.open()
    doc.write(Paste.get_value())
    doc.close()
    

    这很有效。但唯一的问题是,如果以前使用过一些javascript,它会留在window对象中,重新定义它们会导致错误。

    我还没有找到重置/替换iframe窗口对象的方法。

    我之前做的是创建一个新的iframe并替换旧的iframe。

    我也可以尝试更改src,然后更改内容。

    所以我的问题是,有没有一种方法可以替换或重置iframe的window对象而不替换它或修改src?

    1 回复  |  直到 6 年前
        1
  •  0
  •   madprops    6 年前

    我想我将尝试动态更改src,并等待load事件更改内容。

    Paste.setup_render = function()
    {
        Paste.render_iframe.addEventListener("load", function()
        {
            if(Paste.render_mode)
            {
                Paste.do_render()
            }
        })
    }
    
    Paste.reset_render_iframe = function()
    {
        Paste.render_iframe.src = `about:blank?t=${Date.now()}_${Paste.get_random_string(4)}`
    }
    
    Paste.render = function()
    {
        Paste.reset_render_iframe()
    }
    
    Paste.do_render = function()
    {
        let doc = Paste.render_iframe.contentWindow.document
    
        doc.open()
        doc.write(Paste.get_value())
        doc.close()
    }