我想要做的是相当简单,但我没有找到任何简化的方法来做到这一点。
到目前为止,我想要的是收听网页内容的一部分,并且每当它发生变化时,将其新内容保存到文本文件中(如果已经存在则覆盖)。 我需要.txt文件,以便在更改时可以在其他程序中访问。
我正在使用chrome扩展程序,直到我意识到它不允许我们保存到文件系统,并且唯一的其他方法,我发现是将它交叉发送给Chrome应用程序,然后保存在那里。使应用程序读取消息,打包然后获取扩展消息的ID,听起来很麻烦。
所以我的问题是,每次更改时如何自动将DOM中的数据保存到文件中?或者保存我通过扩展程序发送的邮件,而不必为其制作应用程序?
请记住,这是供个人使用的东西,我并不关心在调试模式/权限/等中运行它。
答案 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 Observer和offer 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();