这个问题已经在 stackoverflow 上被问过几次,但我还没有找到适合我独特情况的解决方案。
我正在寻找替换已弃用的代码livequery
和DOMNodeInserted
. 示例如下所示。
我正在为我们需要在工作中使用的第 3 方网站开发 javascript。因此,当我的脚本运行时,页面已加载,我无法访问服务器上的 js 文件。我们只使用IE,当前版本是IE11。
我在这里读到,这livequery()
在“需要响应 DOM 更改并且无法控制导致这些更改的 jQuery 的极少数情况”中很有用。这正是我的情况。
我对这些东西完全是个菜鸟,但我读过 MutationEvents/Observers 可以做到这一点,但它们与 IE 不兼容。无论如何,我所阅读的内容超出了我的理解范围。
这是我正在尝试做的事情:
当用户单击第 3 方应用程序上的选项卡时,该选项卡上的所有内容都是动态创建的。我需要确定选项卡何时完成加载 - 所以我通过检查选项卡上是否存在元素来执行此操作,并且在创建它时我知道选项卡已加载。
对于此示例,选项卡包含一个名为“s_3_1_12_0_icon”的图标。
这两个代码片段都将触发所需的结果:
//Method 1: Using DOMNodeInserted
$('body').on('DOMNodeInserted', function () {
var elementExists = document.getElementById('s_3_1_12_0_icon');
if (elementExists != null) {
alert('The element has just been created')
$('body').off('DOMNodeInserted');
}
});
//Method 2: Using Livequery
$('#s_3_1_12_0_icon').livequery(function() {
alert('The element has just been created')
$('#s_3_1_12_0_icon').expire();
});
但如前所述,livequery()
并被DOMNodeInserted
贬低。有这样做的现代方法吗?