这就是问题所在:默认情况下保存通知的 DIV 在用户单击通知按钮之前没有通知。Facebook 有一个内联 onclick 事件,它显示 DIV(通知菜单)并使用 AJAX 来获取通知。
...
我不想使用通用的 setTimeout,因为我不希望用户必须先看到通知,然后突然看到它们。有没有办法监控 DIV,所以一旦添加了通知,它就会运行?
就在这里:
var notificationDiv = document.getElementById(...);
var lastTimeoutID = null;
var main = function(evt){
// evt.target is the inserted element
// if you expect more elements, then do the following:
lastTimeoutID = setTimeout(function(){
lastTimeoutID = null;
// uncomment below block if you only need to do the work once.
/*
notificationDiv.removeEventListener("DOMNodeInserted", main, false);
*/
// do your work here.
}, 500); // waiting 500ms for next element to be added, otherwise doing work.
if (lastTimeoutID) {
clearTimeout(lastTimeoutID);
lastTimeoutID = null;
}
};
notificationDiv.addEventListener("DOMNodeInserted", main, false);
上面的所有超时代码都可能是可删除的,具体取决于您的用户脚本正在做什么。