你可以試試html5的API:MutationObserver,非常強大可以監控一切變動;
特性如下:
1、它等待所有指令碼任務完成後,才會執行,即採用非同步方式
2、它把DOM變動記錄封裝成一個數組進行處理,而不是一條條地個別處理DOM變動。
3、它即可以觀察發生在DOM節點的所有變動,也可以觀察某一類變動
詳細說就是,事件是同步觸發,也就是說DOM發生變動立刻會觸發相應的事件;Mutation
Observer則是非同步觸發,DOM發生變動以後,並不會馬上觸發,而是要等到當前所有DOM操作都結束後才觸發。
舉例來說,如果在文件中連續插入1000個段落(p元素),會連續觸發1000個插入事件,執行每個事件的回撥函式,這很可能造成瀏覽器的卡頓;而Mutation
Observer完全不同,只在1000個段落都插入結束後才會觸發,而且只觸發一次。
當然,一般情況下沒什麼問題。
示例程式碼如下:
varcallback=function(records){
records.map(function(record){
console.log("變動type:"+record.type);
console.log("變動target:"+record.target);
});
};
varobser=newMutationObserver(callback);
varobj=document.getElementById("right_col_peck");
varoptions={
attributes:true,
attributeFilter:["class"]
obser.observe(obj,options);//開始監聽
//obser.disconnect();//停止監聽
Ps:MutationObserver所觀察的DOM變動(即上面程式碼的options物件),包含以下型別:
1、childList:子元素的變動
2、attributes:屬性的變動
3、characterData:節點內容或節點文字的變動
4、subtree:所有下屬節點(包括子節點和子節點的子節點)的變動
你可以試試html5的API:MutationObserver,非常強大可以監控一切變動;
特性如下:
1、它等待所有指令碼任務完成後,才會執行,即採用非同步方式
2、它把DOM變動記錄封裝成一個數組進行處理,而不是一條條地個別處理DOM變動。
3、它即可以觀察發生在DOM節點的所有變動,也可以觀察某一類變動
詳細說就是,事件是同步觸發,也就是說DOM發生變動立刻會觸發相應的事件;Mutation
Observer則是非同步觸發,DOM發生變動以後,並不會馬上觸發,而是要等到當前所有DOM操作都結束後才觸發。
舉例來說,如果在文件中連續插入1000個段落(p元素),會連續觸發1000個插入事件,執行每個事件的回撥函式,這很可能造成瀏覽器的卡頓;而Mutation
Observer完全不同,只在1000個段落都插入結束後才會觸發,而且只觸發一次。
當然,一般情況下沒什麼問題。
示例程式碼如下:
varcallback=function(records){
records.map(function(record){
console.log("變動type:"+record.type);
console.log("變動target:"+record.target);
});
};
varobser=newMutationObserver(callback);
varobj=document.getElementById("right_col_peck");
varoptions={
attributes:true,
attributeFilter:["class"]
};
obser.observe(obj,options);//開始監聽
//obser.disconnect();//停止監聽
Ps:MutationObserver所觀察的DOM變動(即上面程式碼的options物件),包含以下型別:
1、childList:子元素的變動
2、attributes:屬性的變動
3、characterData:節點內容或節點文字的變動
4、subtree:所有下屬節點(包括子節點和子節點的子節點)的變動