1

我为社区网站创建了一个书签扩展,用于托管帖子,我需要在社区网站中获得新帖子的桌面通知。chrome 在后台运行,但除非桌面通知通知,否则不会打开任何选项卡。

想法是定期从后台页面向内容脚本发送消息,并在帖子上获取更新并显示桌面通知,从而用户在看到通知时打开更新。

查询:如何访问网站的 DOM(当 chrome 在后台运行时),隐藏提取过程不让用户看到。

谢谢 !!

编辑

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 文件,我只需要提取站点上的第一个内容或更新。

4

1 回答 1

1

您需要使用来自. 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 中获取我们需要的元素。

于 2013-05-03T13:51:25.830 回答