webextensions/src/scripts/contentscript.js

56 lines
1.3 KiB
JavaScript
Raw Normal View History

2018-04-08 22:33:36 +02:00
import ext from "./utils/ext";
import storage from "./utils/storage";
2018-04-08 22:33:36 +02:00
var extractTags = () => {
var url = document.location.href;
2018-10-17 08:14:51 +02:00
if (!url || !url.match(/^http/)) {
console.error("Invalid URL : " + url);
return;
}
2018-04-08 22:33:36 +02:00
var data = {
title: "",
description: "",
image: "",
2018-10-17 08:14:51 +02:00
url: url
};
2018-04-08 22:33:36 +02:00
var ogTitle = document.querySelector("meta[property='og:title']");
2019-05-06 17:01:54 +02:00
if (ogTitle) {
2018-10-17 08:14:51 +02:00
data.title = ogTitle.getAttribute("content");
2018-04-08 22:33:36 +02:00
} else {
2018-10-17 08:14:51 +02:00
data.title = document.title;
2018-04-08 22:33:36 +02:00
}
2019-05-06 17:01:54 +02:00
var descriptionTag =
document.querySelector("meta[property='og:description']") ||
document.querySelector("meta[name='description']");
if (descriptionTag) {
data.description = descriptionTag.getAttribute("content");
2018-04-08 22:33:36 +02:00
}
2019-05-06 17:01:54 +02:00
var 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");
}
2019-05-06 17:01:54 +02:00
}
2018-04-08 22:33:36 +02:00
return data;
};
2018-04-08 22:33:36 +02:00
function onRequest(request, sender, sendResponse) {
2019-05-06 17:01:54 +02:00
if (request.action === "process-page") {
sendResponse(extractTags());
2018-04-08 22:33:36 +02:00
}
}
2019-05-06 17:01:54 +02:00
ext.runtime.onMessage.addListener(onRequest);