反正是有得到的iframe不拆卸及reappending包含它的脚本标签来执行注入的javascri

2019-08-01 05:22发布

语境:

我建立一个活的HTML,CSS和JavaScript编辑器。 它可以访问这里 。

该人士可以访问这里 。

题:

是否有可能运行注入的iframe不重复删除和添加往返于DOM树包含代码<script>标记的JavaScript代码? 由于DOM操作是一个昂贵的事,我想尝试和消除多个DOM操作。 相反,我希望能够只需更改<script>标记的的textContent并让它运行,我已经插入了新的代码。

谢谢!

Answer 1:

如果你不介意使用邪恶 eval ,您可以在iframe的窗口重新评估大多数JavaScript,例如

function someFunction(){                                // any function
    console.log(document.body.children);
}

someFunction();                                         // see normal output

var ifrm  = document.getElementsByTagName('iframe')[0], // your iframe
    iwind = ifrm.contentWindow;                         // the iframe's window

iwind.eval( someFunction.toString() );                  // re-evaluate function with eval from iframe
iwind.someFunction();                                   // see new output - output is in iframe's context

比较反对

iwind.someFunction = someFunction;                      // set variable
iwind.someFunction();                                   // same as calling someFunction() from parent

它应适用于大多数有效的JavaScript(考虑范围),但要注意, 使用eval可不好 。



文章来源: Is there anyway of getting javascript code injected in an iframe to execute without removing and reappending the script tag containing it?