【问题标题】:Cannot delete URLs with Chrome's history API无法使用 Chrome 的历史 API 删除 URL
【发布时间】:2013-08-21 16:42:02
【问题描述】:

我正在制作一个 Chrome 扩展程序,以使用 Chrome's history API 从我的历史记录中删除某些 URL。到目前为止的代码如下:

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 是您可以输入的文本框。)

从三个alerts 中可以看出,变量很好。但是,代码实际上并没有从历史记录中删除 URL。当我检查(chrome://history/)时,URL 仍然存在。

这是我的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 版本。

【问题讨论】:

  • 提示:当您的表单被提交时,页面将被卸载,除非您return true; 或致电event.preventDefault();
  • @RobW 谢谢,现在尝试...编辑:仍然无法正常工作。 :(
  • @RobW 我试过了,还是不行。不过,我将这一行编辑到我的问题中,以表明这不是问题。
  • @Doorkob 检查弹出窗口。您将看到有关 API 调用不匹配的错误。 chrome.history.deleteUrl 需要一个带有键 url 的对象,而不是字符串。
  • @RobW 啊,我刚刚按 F12 并没有看到任何错误。我现在就试试这个对象。

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


【解决方案1】:

您不应该将字符串传递给chrome.history.deleteUrl 方法,而是传递一个带有键 url 的对象。如果你inspect your popup,你会看到如下错误:

错误:表单 history.deleteUrl(string) 的调用与定义 history.deleteUrl(对象详细信息,可选函数回调)不匹配

总之,改变

chrome.history.deleteUrl(query.value)

chrome.history.deleteUrl({ url: query.value });

【讨论】:

    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    相关资源
    最近更新 更多