3

我正在编写一个非常简单的 Chrome 扩展程序来自动清除我的历史记录,因为这不是内置功能。我已经得到了它的功能,但只是想确认我在结束之前做了一些有意义的事情。

首先 - 是否有理由执行 chrome.history.deleteAll?这实际上并没有与 URL 浏览历史记录交互,相反,您需要为此使用 chrome.browsingData.*。我应该做前者吗?

Next - 经过搜索和搜索,似乎无法在关机时执行功能。我获得的最接近真实信息的是有人说当 Chrome 退出时,它会在不影响任何情况下终止所有扩展。我错过了一种在关机时清理历史记录的方法吗?

最后 - 因为我无法在关机时清理,所以我在启动时清理,在后台页面中使用 window.onload。chrome.runtime.onStartup 不能可靠地为我工作,而 window.onload 确实 - 这是一种好的做事方式吗?

提前感谢您的帮助。

4

2 回答 2

4

你是对的,没有办法在 Chrome 关闭时执行任何操作。Chrome 没有 onClose 事件。不仅是字面上的,而且是隐喻的:当 Chrome 关闭时,它不会等待任何扩展程序关闭。

您可以挂起chrome.windows.onRemoved并等待最后一个窗口关闭,但如果 Chrome 正在关闭,则不能保证您的扩展程序有时间运行它。与 onSuspend 或任何你发现的东西一样。

因此,如果您的实现有效,则不能保证它在其他 Chrome 中也有效。

关于chrome.history.deleteAll,我有同样的问题,并将尝试使用chrome.browsingData更现代和更完整的方式来处理浏览数据,包括历史记录。

于 2013-08-31T00:11:53.087 回答
1

本文档列出了一个 onSuspend 事件:

应用关闭前清理

应用运行时在卸载之前将 onSuspend() 事件发送到事件页面。您的事件页面可以侦听此事件并在应用关闭之前执行清理任务。

一旦触发此事件,应用程序运行时将开始关闭应用程序的过程:所有事件停止触发并且 JavaScript 执行停止。处理此事件时启动的任何异步操作都不能保证完成。保持清理任务同步和简单。

chrome.runtime.onSuspend.addListener(function() { // 做一些简单的清理任务。});

该文档onSuspend也可用于扩展

于 2013-08-30T09:26:26.273 回答