Я создал расширение закладки для веб-сайта сообщества, на котором размещаются сообщения, мне нужно иметь уведомление о новых сообщениях на сайте сообщества. chrome работает на фоне, но никакие вкладки не будут открыты, если не будут уведомлены об уведомлении рабочего стола.
Идея - отправить сообщение с фоновой страницы на контент script для регулярного интервала и получать обновления в сообщении и отображать уведомление на рабочем столе, тем самым пользователь открывает обновление при просмотре уведомлений.
Query: Как получить доступ к DOM сайта (когда хром работает в фоновом режиме), скрывая процесс извлечения из глаз пользователя.
Спасибо!
ИЗМЕНИТЬ
var statone;
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.dsswym.3ds.com/", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status==200) {
setTimeout(function(){ //wait for the webpage loading
statone = $('#widgetPanel-7qrSN8CAwqKk0DP2_GQK').text();
console.log(statone);
alert(statone);
}, 10000);
}
}
xhr.send();
Я не могу получить текстовые значения над кодом выше, вместо этого поле предупреждения пусто. Исходный сайт не предоставляет файл xml или Json, просто мне нужно извлечь первый контент или обновление на сайте.
Вам нужно использовать ответ от XMLHttpRequest
. Выполнение запроса XMLHttpRequest
не загружает ресурс запроса на страницу.
В jQuery вы можете сделать это следующим образом:
$.get("https://www.dsswym.3ds.com/", function(data) {
// load response text into a new page element
var fakePage = document.createElement("html");
fakePage.innerHTML = data;
// find the desired element within the new page element
var statone = $(fakePage).find('#widgetPanel-7qrSN8CAwqKk0DP2_GQK').text();
console.log(statone);
}
});
Здесь хранится результат извлечения Ajax в innerHTML
нового элемента <html>
, который обрабатывает текст, подлежащий анализу, в новую DOM. Затем мы используем метод jQuery .find
, чтобы получить необходимый элемент из этого DOM.