首页 > 解决方案 > chrome.history.deleteUrl 或 chrome.browsingData.remove 的 Google 扩展 HostEquals

问题描述

我正在开发一个 chrome 扩展项目,但无法让 host equals 工作,因此它涵盖了用户经过域的所有地方。例如,如果用户访问https://www.google.com/imghp?hl=en让代码在那里再次执行。这可以在 background.js 文件中执行吗?我认为匹配模式在这里不起作用。如果设置为确切的 url chrome.history.deleteUrl({ url: 'www.google.com'},则以下代码将正确执行,但如果我尝试将其设置为 hostEquals,则不会。我认为此函数不允许 hostEquals。谢谢任何帮助。

background.js 文件-

'use strict';

chrome.webNavigation.onCompleted.addListener(function() {
  }, {url: [{urlMatches : 'www.google.com'}]});

    var callback = function () {
        alert("History is clearing");
      };

    chrome.history.deleteUrl(
      { url: [{hostEquals: 'www.google.com'}]}
      , callback);

有没有办法可以将 hostEquals 作为变量过去?HostEquals 也不适用于 chrome.browsingData.remove()

标签: javascriptgoogle-chromegoogle-chrome-extensiongoogle-chrome-devtools

解决方案


请不要发明不存在的属性:正如文档所说deleteUrl,只有url属性,即“要删除的 URL”,而不是模式。如果要从域中删除所有 URL,请首先使用chrome.history.search找到它们。另请参阅演示扩展

如您在文档details.url中所见,更好的解决方案可能是使用提供给 onCompleted 回调。另请参阅演示扩展并自行查找更多示例。

chrome.webNavigation.onCompleted.addListener(details => {
  chrome.history.deleteUrl({url: details.url});
}, {url: [{hostEquals: 'www.google.com'}]});

您的代码中的另一个问题是工具错误,因为它是一个可以匹配无关 URL中的https://foo/bar/www1google2comurlMatches的正则表达式。

PS 考虑使用 onCommitted 而不是 onCompleted 更早地执行检查。


推荐阅读