Dom inspector like chrome dev tools.
npm install dom-inspector --save<script type="text/javascript" src="./dist/dom-inspector.min.js"></script>const DomInspector = require('dom-inspector');import DomInspector from 'dom-inspector';const inspector = new DomInspector();const inspector = new DomInspector({
root: 'body',
exclude: ['#exclude>div', document.querySelector('.exclude')],
theme: 'you-custom-theme-class',
maxZIndex: '', // max z index, if blank, will auto get document.all max z index
});-
root
Dom inspector root element.
StringorDom, defaultbody. -
exclude
Not inspect some elements.
StringorDomArray. -
theme
Inspector overlay style. You can custom overlay background color as follow.
.you-custom-theme-class .margin { background-color: blue; } .you-custom-theme-class .border { background-color: red; } .you-custom-theme-class .padding { background-color: green; } .you-custom-theme-class .content { background-color: gray; }
Don`t forget background color opacity. ^_^
-
inspector.targetInspecting element.
-
inspector.enable()Display overlay
blockand addEventListenermousemove. -
inspector.pause()RemoveEventListener
mousemove, pause inspector. -
inspector.disable()RemoveEventListener
mousemove, display overlaynone. -
inspector.destroy()disable()and remove overlay. -
inspector.getXPath([ele])Return ele XPath.
-
inspector.getSelector([ele])Return ele selector.
html>body>div:nth-of-type(9) -
inspector.getElementInfo([ele])return { top: '', left: '', width: '', height: '', 'padding-top': '', 'padding-right': '', 'padding-bottom': '', 'padding-left': '', 'border-top-width': '', 'border-right-width': '', 'border-bottom-width': '', 'border-left-width': '', 'margin-top': '', 'margin-right': '', 'margin-bottom': '', 'margin-left': '' };
新增onClick事件并阻止冒泡可结合iframe使用做可视化埋点
const inspector = new DomInspector({
onClick: ({ tag, xpath, selector }) => {
try {
window.parent.postMessage({ type: 'inspectorClick', payload: { tag, xpath, selector }, timestamp: Date.now() }, '*');
} catch (e) {
console.error('postMessage to parent failed', e);
}
}
});

