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 桌面通知的主要内容,如果未能解决你的问题,请参考以下文章
如何使用javascript动态更改html中svg的文本内容