我有一个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,然后更改内容。
这些问题是,1)更换iframe似乎很昂贵,2)我必须处理竞争条件,必须检查iframe何时完全加载以接受新内容。
所以我的问题是,有没有一种方法可以替换或重置iframe的窗口对象而不替换它或修改src?
答案 0 :(得分:0)
猜猜我将尝试动态更改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()
}