chrome 在后台运行时动态站点更新的 Chrome 桌面通知

Posted

技术标签:

【中文标题】chrome 在后台运行时动态站点更新的 Chrome 桌面通知【英文标题】:Chrome desktop notification for dynamic site update when chrome runs in background 【发布时间】:2013-05-02 16:38:38 【问题描述】:

我已经为社区网站创建了一个书签扩展,用于托管帖子,我需要在社区网站中获得新帖子的桌面通知。 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 文件,我只需要提取网站上的第一个内容或更新。

【问题讨论】:

"如何访问网站的DOM(chrome在后台运行时)" -- XMLHttpRequest?另见developer.chrome.com/extensions/xhr.html @apsillers:谢谢!,我正在努力。如果有任何疑问,我会回复。 @apsillers:我尝试使用我在查询部分更新的代码提取 DOM。不走运! 【参考方案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 获取的结果存储到新的 <html> 元素的 innerHTML 中,这会将文本解析为新的 DOM。然后我们使用 jQuery 的 .find 方法从 DOM 中获取我们需要的元素。

【讨论】:

我得到了页面内容,因为页面是由 javascript(动态页面)驱动的,我无法获取重要元素,即函数的数据内容中缺少一些元素。知道如何获取网页的完整元素。

以上是关于chrome 在后台运行时动态站点更新的 Chrome 桌面通知的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Chrome 应用尽快更新?

如何使用javascript动态更改html中svg的文本内容

Chrome扩展程序:在URL更新时调用后台

Chrome JS 控制台,如何在后台运行?

如何根据后台运行的功能对 chrome 扩展的用户界面进行更改

更新了这版Chrome,所有的HTTP网站都成了不安全