反复将新DOM内容保存到同一文本文件中

时间:2016-01-27 00:34:38

标签: javascript google-chrome-extension google-chrome-app

我想要做的是相当简单,但我没有找到任何简化的方法来做到这一点。

到目前为止,我想要的是收听网页内容的一部分,并且每当它发生变化时,将其新内容保存到文本文件中(如果已经存在则覆盖)。 我需要.txt文件,以便在更改时可以在其他程序中访问。

我正在使用chrome扩展程序,直到我意识到它不允许我们保存到文件系统,并且唯一的其他方法,我发现是将它交叉发送给Chrome应用程序,然后保存在那里。使应用程序读取消息,打包然后获取扩展消息的ID,听起来很麻烦。

所以我的问题是,每次更改时如何自动将DOM中的数据保存到文件中?或者保存我通过扩展程序发送的邮件,而不必为其制作应用程序?

请记住,这是供个人使用的东西,我并不关心在调试模式/权限/等中运行它。

2 个答案:

答案 0 :(得分:0)

MutationObserver可能是你正在寻找的,加上for every sheet do this或一些排列。

https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

为了保存数据,我建议您查看此问答:Chrome extension: How to save a file on disk

答案 1 :(得分:0)

您可以在事件处理程序中使用Mutation Observeroffer a download

function download(filename, text) {
  var element = document.createElement('a');
  element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
  element.setAttribute('download', filename);

  element.style.display = 'none';
  document.body.appendChild(element);

  element.click();

  document.body.removeChild(element);
}

// select the target node
var target = document.querySelector('#some-id');

// create an observer instance
var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    download('changed.txt', mutation.target.textContent);
    // TODO might need some conversion here ^^
  });    
});

// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true };

// pass in the target node, as well as the observer options
observer.observe(target, config);

// later, you can stop observing
observer.disconnect();