DOM 스파이
13963 단어 showdevwebdevproductivityjavascript
DOM 요소 위로 마우스를 가져가면 속성이 표시됩니다!
직접 사용해보십시오
아래의 전체 코드 블록을 복사하여 브라우저 웹 콘솔에 붙여넣으십시오. 이제 현재 있는 웹 페이지 주위에 마우스를 올려 놓으십시오. 당신은 무엇을 볼 수 있습니까?
(function SpyOn() {
const _id = 'spyon-container',
_posBuffer = 3;
function init() {
document.body.addEventListener('mousemove', glide);
document.body.addEventListener('mouseover', show);
document.body.addEventListener('mouseleave', hide);
}
function hide(e) {
document.getElementById(_id).style.display = 'none';
}
function show(e) {
const spyContainer = document.getElementById(_id);
if (!spyContainer) {
create();
return;
}
if (spyContainer.style.display !== 'block') {
spyContainer.style.display = 'block';
}
}
function glide(e) {
const spyContainer = document.getElementById(_id);
if (!spyContainer) {
create();
return;
}
const left = e.clientX + getScrollPos().left + _posBuffer;
const top = e.clientY + getScrollPos().top + _posBuffer;
spyContainer.innerHTML = showAttributes(e.target);
if (left + spyContainer.offsetWidth > window.innerWidth) {
spyContainer.style.left = left - spyContainer.offsetWidth + 'px';
} else {
spyContainer.style.left = left + 'px';
}
spyContainer.style.top = top + 'px';
}
function getScrollPos() {
const ieEdge = document.all ? false : true;
if (!ieEdge) {
return {
left : document.body.scrollLeft,
top : document.body.scrollTop
};
} else {
return {
left : document.documentElement.scrollLeft,
top : document.documentElement.scrollTop
};
}
}
function showAttributes(el) {
const nodeName = `<span style="font-weight:bold;">${el.nodeName.toLowerCase()}</span><br/>`;
const attrArr = Array.from(el.attributes);
const attributes = attrArr.reduce((attrs, attr) => {
attrs += `<span style="color:#ffffcc;">${attr.nodeName}</span>="${attr.nodeValue}"<br/>`;
return attrs;
}, '');
return nodeName + attributes;
}
function create() {
const div = document.createElement('div');
div.id = _id;
div.setAttribute('style', `
position: absolute;
left: 0;
top: 0;
width: auto;
height: auto;
padding: 10px;
box-sizing: border-box;
color: #fff;
background-color: #444;
z-index: 100000;
font-size: 12px;
border-radius: 5px;
line-height: 20px;
max-width: 45%;
`
);
document.body.appendChild(div);
}
init();
})();
작동 방식
이 모듈은 IIFE로 구현됩니다. 이렇게 하면 DOM 스파이 지원이 필요할 때마다 코드를 복사하여 웹 콘솔에 붙여넣을 수 있습니다. 문서의 본문에 div가 삽입되고 본문에서 마우스 이벤트 리스너가 활성화됩니다. 속성은 대상 요소에서 검색되어 단일 문자열로 축소된 다음 도구 설명 안에 표시됩니다.
사용 사례
이 코드에서 배울 수 있는 것
오픈 소스
소스 코드here를 찾을 수 있으며 더 개선할 수 있도록 권장합니다! IIFE로 구현되는 것을 원하지 않거나, 다른 데이터를 보여주고 싶거나, 그냥 깨졌을 수도 있습니다!
행복한 스파이!
Reference
이 문제에 관하여(DOM 스파이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/eaich/spy-on-the-dom-3d47텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)