我正在尝试创建一个简单的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);
});
});
}
所以有三个问题
你可以克隆一个git repo来重现这个bug。 https://github.com/rohanp/test
我有Chrome版本44.0.2403.125(64位)
答案 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