-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackground.js
46 lines (40 loc) · 1.41 KB
/
background.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
let injectedTabSearch = new Map();
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
const url = changeInfo.url // Ensure it's a URL change
? new URL(changeInfo.url)
: null;
if (url !== null) {
const isGoogleSearch =
url.hostname.includes(".google.") && // Ensure the changed url is of google
url.pathname === "/search";
const searchQuery = isGoogleSearch ? getSearchQuery(url) : null;
const isNewSearch =
searchQuery !== null &&
(!injectedTabSearch.has(tabId) ||
searchQuery !== injectedTabSearch.get(tabId)); // Ensure that either it's a new tab or change in search for the same tab
if (isNewSearch) {
chrome.scripting.executeScript(
{
target: { tabId: tabId },
func: ({ origin, pathname, searchQuery }) => {
window.location.replace(
origin + pathname + "?udm=14&q=" + searchQuery
);
},
args: [{ origin: url.origin, pathname: url.pathname, searchQuery }],
},
() => chrome.runtime.lastError
);
if (url.search) {
injectedTabSearch.set(tabId, searchQuery);
}
}
}
});
function getSearchQuery(url) {
const searchQuery = url.search
.slice(1)
.split("&")
.filter((str) => str.startsWith("q="));
return searchQuery.length > 0 ? searchQuery.at(0).substring(2) : null;
}