import ext from "./utils/ext"; let extractDOM = () => { let indexInParent = node => { let children = node.parentNode.childNodes; let num = 0; for (let i = 0; i < children.length; i++) { if (children[i] === node) return num; if (children[i].nodeType === 1) num++; } return -1; }; let gx = el => { let xp = ""; for (; el && el.nodeType === 1; el = el.parentNode) { let id = indexInParent(el) + 1; // jQuery(el.parentNode).children(el.tagName).index(el)+1; id = id > 1 ? "[" + id + "]" : ""; xp = "/" + el.tagName.toLowerCase() + id + xp; } return xp; }; document.addEventListener("click", function(evt) { let tar = evt.target; while (tar && tar !== this) { if (tar.matches(".shikihover")) { let data = extractTags(); data.xpath = gx(tar); } } }); }; let extractTags = () => { let url = document.location.href; if (!url || !url.match(/^http/)) { console.error("Invalid URL : " + url); return; } let data = { title: "", description: "", image: "", url: url }; let ogTitle = document.querySelector("meta[property='og:title']"); if (ogTitle) { data.title = ogTitle.getAttribute("content"); } else { data.title = document.title; } let descriptionTag = document.querySelector("meta[property='og:description']") || document.querySelector("meta[name='description']"); if (descriptionTag) { data.description = descriptionTag.getAttribute("content"); } let imgTag = document.querySelector("meta[property='og:image']") || document.querySelector("meta[property='twitter-image']"); if (imgTag) { data.image = imgTag.getAttribute("content"); } else { imgTag = document.querySelector("link[rel=icon]") || document.querySelector("link[rel=apple-touch-icon]"); if (imgTag) { data.image = imgTag.getAttribute("href"); } } return data; }; function onRequest(request, sender, sendResponse) { if (request.action === "process-page") { sendResponse(extractTags()); } if (request.action === "DOM") { console.log("DOM"); sendResponse(extractDOM()); } } ext.runtime.onMessage.addListener(onRequest);