Skip to content

Instantly share code, notes, and snippets.

@j3lte
Last active August 29, 2015 14:21
Show Gist options
  • Select an option

  • Save j3lte/e6021013553e34d41dd1 to your computer and use it in GitHub Desktop.

Select an option

Save j3lte/e6021013553e34d41dd1 to your computer and use it in GitHub Desktop.
Test Page// source http://jsbin.com/tesita
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Test Page</title>
<style>
body {
font-family: sans-serif;
}
.highlight {
background-color: yellow;
}
</style>
</head>
<body>
<p>I'm a paragraph, with <strong>some strong text</strong>, and some <em>emphasized text</em>.</p>
<p>I'm another paragraph.</p>
<div>Here's a div</div>
<script id="jsbin-javascript">
(function() {
var prev;
document.body.onmouseover = handler;
document.body.onclick = clickHandler;
var getElementCSSSelector = function(element)
{
if (!element || !element.localName)
return "null";
var label = element.localName.toLowerCase();
if (element.id)
label += "#" + element.id;
if (element.classList && element.classList.length > 0)
label += "." + element.classList.item(0);
return label;
};
var getElementCSSPath = function(element)
{
var paths = [];
for (; element && element.nodeType == 1; element = element.parentNode)
{
var selector = getElementCSSSelector(element);
paths.splice(0, 0, selector);
}
return paths.length ? paths.join(" ") : null;
};
function handler(event) {
if (event.target === document.body ||
(prev && prev === event.target)) {
return;
}
if (prev) {
prev.className = prev.className.replace(/\bhighlight\b/, '');
prev = undefined;
}
if (event.target) {
prev = event.target;
prev.className += "highlight";
}
}
function clickHandler(event) {
if (event.target) {
//console.log(event.target);
console.log(getElementCSSPath(event.target).replace(/\b\.highlight\b/, ''));
}
document.body.onmouseover = null;
document.body.onclick = null;
}
})();
</script>
<script id="jsbin-source-javascript" type="text/javascript">(function() {
var prev;
document.body.onmouseover = handler;
document.body.onclick = clickHandler;
var getElementCSSSelector = function(element)
{
if (!element || !element.localName)
return "null";
var label = element.localName.toLowerCase();
if (element.id)
label += "#" + element.id;
if (element.classList && element.classList.length > 0)
label += "." + element.classList.item(0);
return label;
};
var getElementCSSPath = function(element)
{
var paths = [];
for (; element && element.nodeType == 1; element = element.parentNode)
{
var selector = getElementCSSSelector(element);
paths.splice(0, 0, selector);
}
return paths.length ? paths.join(" ") : null;
};
function handler(event) {
if (event.target === document.body ||
(prev && prev === event.target)) {
return;
}
if (prev) {
prev.className = prev.className.replace(/\bhighlight\b/, '');
prev = undefined;
}
if (event.target) {
prev = event.target;
prev.className += "highlight";
}
}
function clickHandler(event) {
event.preventDefault();
event.stopPropagation();
if (event.target) {
//console.log(event.target);
console.log(getElementCSSPath(event.target).replace(/\b\.highlight\b/, ''));
}
document.body.onmouseover = null;
document.body.onclick = null;
}
})();</script></body>
</html>
(function() {
var prev;
document.body.onmouseover = handler;
document.body.onclick = clickHandler;
var getElementCSSSelector = function(element)
{
if (!element || !element.localName)
return "null";
var label = element.localName.toLowerCase();
if (element.id)
label += "#" + element.id;
if (element.classList && element.classList.length > 0)
label += "." + element.classList.item(0);
return label;
};
var getElementCSSPath = function(element)
{
var paths = [];
for (; element && element.nodeType == 1; element = element.parentNode)
{
var selector = getElementCSSSelector(element);
paths.splice(0, 0, selector);
}
return paths.length ? paths.join(" ") : null;
};
function handler(event) {
if (event.target === document.body ||
(prev && prev === event.target)) {
return;
}
if (prev) {
prev.className = prev.className.replace(/\bhighlight\b/, '');
prev = undefined;
}
if (event.target) {
prev = event.target;
prev.className += " highlight";
}
}
function clickHandler(event) {
if (event.target) {
//console.log(event.target);
console.log(getElementCSSPath(event.target).replace(/\b\.highlight\b/, ''));
}
document.body.onmouseover = null;
document.body.onclick = null;
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment