Я создал очень простое расширение Chrome для личного использования, которое отправляло мне уведомление браузера, если элемент DOM изменился на вкладке, на которой был открыт определенный сайт, и переключил эту вкладку на активную.
Этобудет работать, если вкладка не была активной и открытой (предполагаемое / требуемое поведение), но недавно уведомление больше не отправляется, если вкладка не активна.Я не изменил ни один код, поэтому не уверен, что недавнее обновление Chrome изменило поведение API.
Вот мой код:
manifest.json
{
"name": "New Element Notifier",
"version": "1.0",
"description": "Creates notification if new element exists.",
"permissions": [
"notifications"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [
{
"matches": ["https://*.website.com/*"],
"js": ["jquery.min.js", "website.js"],
"run_at": "document_end"
}
],
"web_accessible_resources": [
"*.wav"
],
"manifest_version": 2
}
background.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.type == "new-element") {
chrome.tabs.update(sender.tab.id, {active: true});
var options = {
type: "basic",
title: "New Element",
message: "A new element exists!",
iconUrl: "icon.png"
}
chrome.notifications.create(options);
sendResponse({confirm: "tab changed"});
}
});
website.js
var elementContainer = document.querySelectorAll(".items-container")[0];
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
chrome.runtime.sendMessage({type: 'new-element'}, function(response) {
console.log(response.confirm);
});
}
});
});
observer.observe(elementContainer, {characterData: true, childList: true, subtree: true});
Не уверен, что случилось какдолгое время он работал нормально.Любая помощь с этим будет оценена!