我正在为Opera编写用户脚本,但是Opera不支持DOMSubtreeModified,是否有替代的子树修改方法?
注意:我只在JavaScript中寻找解决方案(不使用jQuery或任何JavaScript库)。
谢谢。
我正在为Opera编写用户脚本,但是Opera不支持DOMSubtreeModified,是否有替代的子树修改方法?
注意:我只在JavaScript中寻找解决方案(不使用jQuery或任何JavaScript库)。
谢谢。
针对您真正关心的节点进行定位,然后使用间隔计时器检查更改。
关键是选择感兴趣的节点,例如:
<div id="content"><p class="author"> ... </p>
...
</div>
也许你想要"author"节点。
你可以在定时器内使用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;
}