關於JS中MutationObserver監聽Dom樹變化中的Callback函數一直調用的問題

今天做了一個水印防止消除的需求。我生成水印的方式是通過canvas中生成一張圖片放在,body標籤的背景圖片。防消除用的就是MutationObserver去監聽body標籤中的屬性是否變化,變化就重新生成水印。但是我在chrome瀏覽器測試取消背景圖片這個樣式的時候,會一直調用callback函數,這裏就有點搞不明白了,希望大神能夠解惑。
代碼

<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<script type="text/javascript" src="js/jquery-1.4.4.min.js" ></script>
	<script src="js/jquery.waterMarker.js"></script>
	<script>

	var myDate = new Date();
	//獲取當前年
	var year=myDate.getFullYear();
	//獲取當前月
	var month=myDate.getMonth()+1;
	//獲取當前日
	var date=myDate.getDate(); 
	var h=myDate.getHours();       //獲取當前小時數(0-23)
	var m=myDate.getMinutes();     //獲取當前分鐘數(0-59)
	var s=myDate.getSeconds();  
    
    var now = year+"-" + month + "-" + date + " " + h + ":" + m + "";
    jQuery(function(){
    	waterMaker("huangshuo",now);
    	//此處callback函數會一直調用,影響瀏覽器性能
		 var callback = function (records) {
		  records.map(function (record) {
		    console.log('Previous attribute value: ' + record.oldValue);
		    var judge = record.oldValue + "";
		    var b = "background";
		     if(judge.match(b)){
		     	waterMaker("huangshuo",now);
		     	//mo.disconnect();
		     	//mo.observe(element[0], options);
		     } 
		  });
		};
		var mo = new MutationObserver(callback);
		
		
		//var element = document.getElementById('#my_element');
		var element = document.getElementsByTagName("body");
		//alert(element[0])
		var options = {
		   'attributes': true,
           'attributeOldValue': true,
		}
		
		mo.observe(element[0], options);

    })
	</script>
	<body>
		<div class="waterMakertClass"></div>
	</body>
</html>

這裏一直重複調用callback函數,控制檯重複打印數據
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章