UNPKG

invisible-watermark

Version:
44 lines (43 loc) 1.7 kB
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; var supportMutationObserver = !!MutationObserver; var watermarkDefaultConfig = { attributes: true, attributeOldValue: true, childList: true, }; function watermarkCallback(mutationList, observer) { mutationList.forEach(function (mutationRecord) { var type = mutationRecord.type, attributeName = mutationRecord.attributeName, target = mutationRecord.target, oldValue = mutationRecord.oldValue, addedNodes = mutationRecord.addedNodes, removedNodes = mutationRecord.removedNodes; if (type === 'attributes') { observer.disconnect(); if (attributeName === 'style') { target.style = oldValue; } else if (attributeName === 'id') { target.id = oldValue; } observer.observe(target, watermarkDefaultConfig); } if (type === 'childList' && !addedNodes[0] && removedNodes[0]) { //判断删除的节点s中是否有水印的dom,有的话重新插入 Array.prototype.forEach.call(removedNodes, function (item) { if (item.id.match(/^wm_/)) { observer.disconnect(); document.body.append(item); observer.observe(target, watermarkDefaultConfig); } }); } }); } function initObserver($el, config) { if (!$el) return; if (supportMutationObserver) { var om = new MutationObserver(watermarkCallback); om.observe($el, watermarkDefaultConfig); } } export default initObserver;