diff --git a/README.md b/README.md index dd8db04..d408acb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,19 @@ -### DNS 缓存清除 +## DNS 缓存清除 > 一键清除chrome的DNS缓存, 并刷新当前选项卡。 web开发的利器。 +### 更新日志 + +#### 2018/07/29 - v0.3.0 +* 兼容chrome 68+ +* chrome 68+之后, 谷歌移除了原清除DNS的API方法, 所以只能通过打开`chrome://net-internals/#dns`页面, 进行js注入的方式来清除缓存。 +* 但是要注入`chrome://net-internals/#dns`页面, 需要额外的授权。 + +> 授权方法: +>> 1. 打开 `chrome://flags/` +>> 2. 找到 `chrome:// URLs`, 并将其设置为`Enabled` +>> **快速导航地址: ** [授权设置地址](chrome://flags/#extensions-on-chrome-urls) + + +#### 2018/07/07 - v0.2.0 +* 首版, 支持chrome 67-; 不需要额外设置任何内容, 即装即用。 \ No newline at end of file diff --git a/background.js b/background.js index a649689..5ea229f 100644 --- a/background.js +++ b/background.js @@ -5,8 +5,40 @@ * @version $Id$ */ -chrome.browserAction.onClicked.addListener(function(tab) { - chrome.benchmarking.clearHostResolverCache() - chrome.benchmarking.closeConnections() - chrome.tabs.executeScript(tab.id, { code: 'location.reload()' }) +chrome.browserAction.onClicked.addListener(function(ctab) { + let cid = ctab.id + let tid = null + let code = ` + let script = document.createElement('script') + script.textContent = \` + chrome.send('clearHostResolverCache') + chrome.send('flushSocketPools') + \` + document.body.appendChild(script) + ` + let callback = function() { + chrome.tabs.remove(tid) + chrome.tabs.executeScript(cid, { code: 'location.reload()' }) + } + + chrome.tabs.query({}, function(tabs) { + let done = false + for (let i = 0, tab; (tab = tabs[i++]); ) { + if (/^chrome:\/\/net-internals/.test(tab.url)) { + tid = tab.id + chrome.tabs.executeScript(tab.id, { code }, callback) + done = true + break + } + } + if (!done) { + chrome.tabs.create( + { url: 'chrome://net-internals/#dns', active: false }, + function(tab) { + tid = tab.id + chrome.tabs.executeScript(tab.id, { code }, callback) + } + ) + } + }) }) diff --git a/manifest.json b/manifest.json index 9a87fe7..43f4f7c 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "DNS Flush", "description": "一键清除chrome的DNS缓存, 并刷新当前选项卡。 web开发的利器。", - "version": "0.2", + "version": "0.3", "author": "yutent", "icons": { "64": "icon64.png", @@ -18,6 +18,7 @@ }, "permissions": [ "tabs", + "chrome://net-internals/#dns", "*://*/*" ], "homepage_url": "https://doui.cc"