使用 jquery 的 Chrome inspect 元素
Chrome inspect element using jquery
我想在Chrome的开发工具中创建类似于检查dom功能的东西。
当悬停在 - 预设的 dom 列表 - 在 dom 顶部创建一个div.shadow
,覆盖它的宽度/高度相同,当鼠标离开时,阴影被隐藏,或者在悬停新选择的 dom 的情况下,它会改变位置和尺寸。
dom.mouseover(function(e) {
shadow.css({
display: "block",
width: dom.width+"px",
height: dom.height+"px",
top: dom.top+"px",
left: dom.left+"px"
});
});
shadow.mouseleave(function() {
$(this).css('display', 'none');
});;
但是当在选定的 dom 列表中有父/子项(如"body")时会出现问题,它会在身体上放置阴影,但随后忽略来自子项的任何鼠标悬停/鼠标输入。
经过测试并完全正常工作
var shadow = $('<div></div>').css({background: 'rgba(100,0,0,0.5)', position: 'absolute'}).appendTo('body');
$(document).on('mousemove', function(e) {
shadow.hide();
var x = e.clientX, y = e.clientY,
dom = $(document.elementFromPoint(x, y));
if(dom.length < 1)
return;
shadow.css({
display: "block",
width: dom[0].offsetWidth +"px",
height: dom[0].offsetHeight +"px",
top: dom.position().top +"px",
left: dom.position().left +"px"
});
shadow.show();
});
您是否考虑过使用大纲而不是覆盖当前选定的元素? 当元素被覆盖时,你不能使用mousemove
来给你悬停的目标元素(因为最上面的元素将永远是阴影)。 这需要每次火灾时隐藏和显示阴影mousemove
这伤害了性能。
请参阅此示例,该示例仅使用大纲和目标元素 mousemove
: http://jsfiddle.net/U4fBu/3/
var _prevElm, _prevOutline;
document.addEventListener("mousemove", function(e) {
if (_prevElm != e.target) {
// Restore old outline styles
if (_prevElm) _prevElm.style.outline = _prevOutline;
// Outline the newly hovered element
_prevElm = e.target;
_prevOutline = _prevElm.style.outline;
e.target.style.outline = "3px solid #0f0";
}
});
document.addEventListener("click", function(e) {
// Don't let the click affect the actual page
e.stopImmediatePropagation();
var elm = e.target;
output.innerHTML = "Element clicked: "
+ elm.tagName
+ (elm.id ? "#" + elm.id : "");
});
你需要的是:document.elementFromPoint(x, y)
- 你必须隐藏阴影(显示:无),
- 从事件中获取鼠标的坐标,
- 使用
document.elementFromPoint(x, y)
获取您正在浏览的元素 - 将阴影的可见性设置回正常。
查看 http://www.quirksmode.org/dom/tests/elementfrompoint.html 它是如何工作的。
不过,您无法使用鼠标悬停来做到这一点,...你必须使用mousemove
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 为什么Inspect元素中的错误显示函数myNUM()没有定义?如何定义函数
- 在inspect元素上编辑HTML时刷新Chrome DOM
- 使用 jquery 的 Chrome inspect 元素
- 在inspect元素中声明变量时未定义
- 有没有一种方法可以手动控制YouTube HTML5播放器的音量(JavaScript/Inspect元素)
- 有没有一种方法可以让我在“inspect”元素中抓取代码?区域
- 使用inspect元素检查是否修改了代码
- 防止html5视频通过inspect元素被下载
- ChartsJS不加载,除了Inspect元素
- 元素不会显示在页面的源代码中,但会显示在“inspect element”中
- 有没有可能实现一个类似firebug的“inspect”元素?使用客户端JavaScript的DOM元素高亮显示