1

我有一个嵌入在其他地方托管的 .js 的页面。这个 .js 有一个按钮,可以触发服务器上的操作并在我的页面上的特定 .js 文件中返回成功消息div

如何检测此消息何时到达并将其替换为div我提供的另一个消息?

4

1 回答 1

2

这个答案表明 DOM 更改事件在最前沿的浏览器中。因此,如果您只使用支持的浏览器,您就可以聆听。

否则,您可能需要设置一个循环计时器(setTimeoutsetInterval)来定期检查 div 是否已更改,然后对此做出反应。

第三种可能性是找出外部脚本如何实际使用您传递给它的 DOM 节点。运气好的话,您可以创建一个 shim 对象。例如,如果外部脚本分配给innerHTML设置内容,那么您可以将一个虚拟对象传递给外部脚本,并对设置的“假”innerHTML属性做出反应。这可能会使用defineProperty

第四种方法可能是找出外部脚本如何与服务器通信,并添加一个间接层。例如,如果外部脚本使用$.ajax,则将其替换为您自己的代码,该代码可以检测外部脚本请求的特定签名。

第五个方法是覆盖外部脚本的按钮单击功能。例如,如果按钮单击函数调用全局externalScriptButtonClick函数,则覆盖它。这可能仅在您对此代码有可见性的情况下才有效,例如,如果它是“私有的”并包装在闭包中,则不会。

于 2013-04-27T12:22:09.500 回答