我正在制作Chrome扩展程序,使用Chrome's history API从我的历史记录中删除某些网址。这是迄今为止的代码:
document.addEventListener('DOMContentLoaded', function() {
var form = document.getElementById('form'),
query = document.getElementById('query')
form.onsubmit = function(e) {
e.preventDefault()
// alert(chrome.history) // [object Object]
// alert(chrome.history.deleteUrl) // function () { [native code] }
// alert(query.value) // whatever I typed
chrome.history.deleteUrl(query.value)
}
query.focus()
})
(form
是我弹出框中的表单,query
是您可以在其中输入的文本框。)
从三个alert
中可以看出,变量很好。但是,代码实际上并未从历史记录中删除URL。当我检查(在chrome://history/
中)时,网址仍在那里。
这是我的manifest.json
,如果重要的话:
{
"manifest_version": 2,
"name": "UnVizit",
"description": "Mark a link as \"not visited\" easily",
"version": "0.1.0",
"permissions": [
"history"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
我使用的是Chrome版本28.0.1500.95 (Official Build 213514) m
。
答案 0 :(得分:1)
您不应该将字符串传递给chrome.history.deleteUrl
方法,而是传递带有密钥网址的对象。如果您inspect your popup,您会看到以下错误:
错误:调用表单history.deleteUrl(字符串)与定义history.deleteUrl(对象详细信息,可选函数回调)不匹配
总之,改变
chrome.history.deleteUrl(query.value)
到
chrome.history.deleteUrl({ url: query.value });