回覆列表
  • 1 # 萌無敵品茗茶色

    你可以試試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:所有下屬節點(包括子節點和子節點的子節點)的變動

  • 中秋節和大豐收的關聯?
  • 怎樣在Win10系統下切換本地帳戶和線上帳戶?