JS:将externalHTML保存并还原到本地存储,没有库,没有jquery

时间:2019-05-18 12:27:14

标签: javascript

我希望添加一个chrome扩展程序,以使论坛的行为有所不同:

1)不管有多少帖子,都在一页上加载主题

2)在每个帖子中添加一个删除按钮,这样我就再也看不到该帖子了

页面加载后,我抓取所有帖子(divs)并保存它们:

chrome.storage.local.get(['posts'], function(result) {                                                                                                   
    var posts = Array.from(document.querySelectorAll('div[id^="post"]'))    
      .map(function(d) {
        var div = document.createElement("div");
        div.innerHTML = d.id;
        d.append(div);
        return d.innerHTML;
      });
    posts.push(...result.posts);
    chrome.storage.local.set({posts : posts}, function() {                      
      window.location.href = nextPage;
    });

保存结束后,我加载下一页,冲洗并重复。 保存所有帖子后,我将在最后一页全部恢复。

我需要每个post / div id的删除功能,但这不是innerHTML的一部分。 我可以保存externalHTML,但是由于节点没有父节点(父节点位于脚本加载的其他页面之一,而不是最后一页),因此在恢复时会产生问题。

在我的代码中,有没有比5-liner map()更好,更易读的方式来保存和恢复等于externalHTML的内容?

感谢那些讨厌阅读本文的人:)

1 个答案:

答案 0 :(得分:0)

我没有保存数组[innerHTML,...],而是保存了一个对象{div_id:div_innerHTML,....}。

这并没有像期望的那样简化保存/恢复代码,但是由于按键查找对象很简单,因此大大简化了删除代码。