Javascript 操作第三方脚本添加的DOM元素
情况: 加载一个外部第三方脚本,向DOM添加一些内容 目标: 一旦这些东西被添加到DOM中,我就想用一点jQuery操作它的内容 为了在操作之前确保这个新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 {
var updateText, target;
updateText = function() {
target = $('#targetElement');
if(target.length) {
target.text('Updated!');
} else {
window.setTimeout(updateText, 500);
}
};
updateText();
这看起来有点可怕。有没有更好的方法来处理这种依赖关系
相关约束:
- 第三方脚本没有公开的API
- 为了工作,这个特别的脚本显然必须通过
元素加载,该元素在
属性中具有特定的URL。因此,通过传递到来加载脚本是行不通的src
- 当它运行时,它还依次加载自己的外部依赖包。即使我可以在启动自己的代码之前检查初始脚本是否已加载,我也不知道是否可以对照这些其他外部脚本进行检查
$(“#a”).bind(“domsubtredemodified”,function(){
警报(“树已更改”);
$(“span”).css(“背景”、“蓝色”);
});
$(“#添加”)。单击(函数(){a
$(“#a”)。追加(“你好
”;
});代码>
div{
背景色:黑色;
}
跨度{
背景色:红色;
颜色:白色;
}
Add to Div
由于您的代码正在运行,并且您正在寻找一个更好/更干净的实现,因此最好将其发布到上。该第三方脚本是否使用异步代码?@Oriol它有点难看,我只对它进行了一点研究。我看到有几个依赖项通过脚本
元素被请求添加到头
@mutus。您可以尝试使用加载
事件侦听器。这可以(以某种方式)工作,但domsubtreedimend
不推荐使用。我收集这些信息是出于非常好的(与性能相关的)原因。