Javascript 挂起子对象时的竞争条件

Javascript 挂起子对象时的竞争条件,javascript,html,hook,Javascript,Html,Hook,我在钓小孩的时候遇到了一个非常奇怪的种族状况。 考虑这个代码: var RealAppend = IframeWindow.Element.prototype.appendChild; IframeWindow.Element.prototype.appendChild = function(){ RealAppend.apply(this, arguments); //some more code here --- >}; 我挂接了一些iframe appendchild,这就

我在钓小孩的时候遇到了一个非常奇怪的种族状况。 考虑这个代码:

var RealAppend = IframeWindow.Element.prototype.appendChild;
IframeWindow.Element.prototype.appendChild = function(){
    RealAppend.apply(this, arguments); //some more code here --- >};
我挂接了一些iframe appendchild,这就是为什么我要用IframeWindow作为iframe内容窗口来执行“IframeWindow.Element.prototype.appendchild”

现在,在挂接appendchild之后,我开始将节点附加到iframe,其中一个节点是一个简单的div元素,id=“somediv”,另一个节点是javascript元素,一旦javascript被执行,它将使用
document.createElement
创建一个iframe并设置其属性,然后执行
document.getElementById('somediv').appendChild(createdFrame)
这将把创建的iframe附加到“somediv”中,我的目标是截取最后一个appendchild并钩住该iframe的appendchild。
首先,我想也许我需要像这样覆盖appendchild:

someDiv.appendChild = function(){.....
new DOMParser();
但是经过更多的测试,我可以看到有时我的代码确实成功了,并钩住了最后一个iframe,有时
SomeDiv.appendChild
是本机代码,而我的代码失败了

你知道为什么吗

编辑: 我想这可能与我正在使用

document.createRange().createContextualFragment(strHTML);
}
要将html解析为字符串,然后将节点附加到iframe,那么div(somediv)是否可以从中获得一个干净的appendChild?但为什么有时它确实有效,有时却无效呢?
另一件事是,在页面加载之后,我使用开发工具获取somediv.appendchild,每次我都会获取钩住的代码,因此问题只在javascript代码执行时发生,因此我设法找出了问题所在,因此,如果有人遇到此问题,以下是解决方案: 当我将html字符串解析为节点以便将它们附加到iframe时,我首先使用的是“DOMParser”API,我忽略了DOMParser使用调用方contentWindow中的文档这一事实,因此没有像这样调用DOMParser:

someDiv.appendChild = function(){.....
new DOMParser();
我需要这样称呼它:

new HookedIframeContentWindow.DOMParser();