Chrome History API奇怪的行为

时间:2015-07-31 14:24:31

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

我正在尝试创建一个简单的chrome扩展程序,以便在每次访问其中时从我的历史记录中删除reddit网址,然后将其替换为随机维基百科文章。为此,我有一个内容脚本,它将消息传递给后台脚本,以从历史记录中删除其URL:

content_script.js:

window.onload = chrome.runtime.sendMessage({greeting: "do the thing"});

background.js:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {

    console.log("deleting url " + sender.tab.url);
    //chrome.browsingData.removeCache({});

    chrome.history.deleteUrl( {url: sender.tab.url}, 
        function () {
            console.log("replacing url");
            chrome.history.addUrl({url: "https://en.wikipedia.org/wiki/Special:Random"});
        } 
    );
 });

我的所有console.log打印确认我的脚本正确执行,没有抛出任何错误(即使在生成的背景页面上)但是当我从chrome://history查看我的历史记录时,我访问过的所有reddit网址仍然是在那里,顶部只有一个维基百科访问。 (image

错误很有趣,因为当我使用chrome历史记录API查看历史记录时,reddit链接就不存在了!所有打印的是一个维基百科链接和我的非reddit历史记录。

function printHistory(){
        chrome.history.search({text: '', maxResults: 10},

         function(data) {
            data.forEach(function(page) {
                console.log(page.url);
                });
        });
    } 

所以有三个问题

  1. reddit网址未在chrome:// history
  2. 中删除
  3. 维基百科网址最后只添加一次(或者每次都以某种方式删除并重新添加)。
  4. https://en.wikipedia.org/wiki/Special:Random尚未解析为真正的链接
  5. 你可以克隆一个git repo来重现这个bug。 https://github.com/rohanp/test

    我有Chrome版本44.0.2403.125(64位)

1 个答案:

答案 0 :(得分:3)

  

1)在chrome:// history

中没有删除reddit网址

这是known bug,因为历史记录同步不会受到删除的影响。目前还不清楚何时修复。

  

2)维基百科网址最后只添加一次(或者每次都以某种方式删除并重新添加)

这就是历史记录的工作原理 - 它只显示您对特定页面的最后一次访问,隐藏了之前的页面。

  

3)https://en.wikipedia.org/wiki/Special:Random尚未解析为真正的链接

为什么会这样?它不像你真的访问该页面。

您应该向Wikipeida API get a random page发出XHR请求。

这应该有效,将结果解析为JSON:https://en.wikipedia.org/w/api.php?action=query&list=random&rnnamespace=0&format=json