javascript - 我可以使用什么来代替 DOMSubtreeModified?

标签 javascript dom opera userscripts

我正在为 Opera 编写用户脚本,而 Opera 不支持 DOMSubtreeModified , 有没有修改子树的替代方法?

注意:我只在 javascript 中寻找解决方案。 (不是 jquery 或任何 javascript 库)

谢谢。

最佳答案

定位您真正关心的节点,然后使用间隔计时器检查更改。

关键是选择感兴趣的节点,例如给定:

<div id="content"><p class="author"> ... </p> 
... 
</div>

也许您需要“作者”节点。
您将在计时器内使用 querySelectorAll("#content p.author") 扫描这些内容。

像这样的代码:

setInterval (MyNodeCheckFunc, 500);

function MyNodeCheckFunc () 
{
    var newNodeList     = [];
    this.oldNodeList    = this.oldNodeList  ||  [];

    var targetNodes     = document.querySelectorAll ('VALID CSS-STYLE SELECTOR');
    if (targetNodes  &&  targetNodes.length > 0) 
    {
        /*--- Found target node(s).  Go through each and act if they
            are new.
        */
        for (var J = targetNodes.length - 1;  J >= 0;  --J) 
        {
            var targNode = targetNodes[J];

            newNodeList.push (targNode);

            if (! targNode.weHaveProcessed) 
            {
                targNode.weHaveProcessed    = true;

                //// DO STUFF FOR NEW NODE.
            }
        }
    }

    /*/// HERE, COMPARE newNodeList TO oldNodeList.
        1)  If an item is in oldNodeList, but not in newNodeList, 
            do any DELETED NODE action.

        2)  If an item is in a different order from oldNodeList 
            to newNodeList, do any MOVED NODE action.
    */
    this.oldNodeList = newNodeList;
}

关于javascript - 我可以使用什么来代替 DOMSubtreeModified?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8166795/

相关文章:

javascript - 在 Phonegap 应用程序中动态加载 index.html

javascript - 函数中的“this”

javascript - 使用 jQuery 删除(和添加)类到 HTML 元素,同时更新 DOM 树

javascript - GitHub 项目页面 : auto-redirect from sub-directory to sub-domain

javascript - window.scroll 不是即时动画

javascript - 如何使用 jQuery 在 javascript 中获取节点的所有子节点作为数组的项目

javascript - 延迟加载 Flash 对象

php - 通过 php 识别 opera 浏览器

html - Opera 忽略的嵌套表格的 CSS 填充

html - 在 Opera 中,输入用黑色包围