webextensions/src/scripts/contentscript.js

55 lines
1.5 KiB
JavaScript
Raw Normal View History

2018-04-08 22:33:36 +02:00
import ext from "./utils/ext";
import storage from "./utils/storage";
browser.runtime.onInstalled.addListener( function(details) {
if ("install" === details.reason) {
storage.set({ url: ext.i18n.getMessage("defaultURL") });
}
});
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']");
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
}
var descriptionTag = document.querySelector("meta[property='og:description']") || document.querySelector("meta[name='description']");
2018-04-08 22:33:36 +02:00
if(descriptionTag) {
data.description = descriptionTag.getAttribute("content")
}
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");
}
}
2018-04-08 22:33:36 +02:00
return data;
};
2018-04-08 22:33:36 +02:00
function onRequest(request, sender, sendResponse) {
if (request.action === 'process-page') {
sendResponse(extractTags())
}
}
ext.runtime.onMessage.addListener(onRequest);