Javascript 操作第三方脚本添加的DOM元素

Javascript 操作第三方脚本添加的DOM元素,javascript,jquery,dom,Javascript,Jquery,Dom,情况: 加载一个外部第三方脚本,向DOM添加一些内容 目标: 一旦这些东西被添加到DOM中,我就想用一点jQuery操作它的内容 为了在操作之前确保这个新DOM元素存在,我可以执行如下操作: var updateText, target; updateText = function() { target = $('#targetElement'); if(target.length) { target.text('Updated!'); } else {

情况:

加载一个外部第三方脚本,向DOM添加一些内容

目标:

一旦这些东西被添加到DOM中,我就想用一点jQuery操作它的内容

为了在操作之前确保这个新DOM元素存在,我可以执行如下操作:

var updateText, target;

updateText = function() {
    target = $('#targetElement');
    if(target.length) {
        target.text('Updated!');
    } else {
        window.setTimeout(updateText, 500);
    }
};

updateText();
这看起来有点可怕。有没有更好的方法来处理这种依赖关系

相关约束:

  • 第三方脚本没有公开的API
  • 为了工作,这个特别的脚本显然必须通过
    元素加载,该元素在
    src
    属性中具有特定的URL。因此,通过传递到来加载脚本是行不通的
  • 当它运行时,它还依次加载自己的外部依赖包。即使我可以在启动自己的代码之前检查初始脚本是否已加载,我也不知道是否可以对照这些其他外部脚本进行检查

您可以使用DOMSubtreeModified事件执行此操作。以下是一个例子:

$(“#a”).bind(“domsubtredemodified”,function(){
警报(“树已更改”);
$(“span”).css(“背景”、“蓝色”);
});
$(“#添加”)。单击(函数(){a
$(“#a”)。追加(“你好
”; });
div{
背景色:黑色;
}
跨度{
背景色:红色;
颜色:白色;
}


Add to Div
由于您的代码正在运行,并且您正在寻找一个更好/更干净的实现,因此最好将其发布到上。该第三方脚本是否使用异步代码?@Oriol它有点难看,我只对它进行了一点研究。我看到有几个依赖项通过
脚本
元素被请求添加到
@mutus。您可以尝试使用
加载
事件侦听器。这可以(以某种方式)工作,但
domsubtreedimend
不推荐使用。我收集这些信息是出于非常好的(与性能相关的)原因。