added different search engines
This commit is contained in:
parent
e94199f9eb
commit
e7a9cfae69
@ -3,9 +3,13 @@ console.log("adding features to search...");
|
|||||||
const form = document.getElementById("search-form");
|
const form = document.getElementById("search-form");
|
||||||
const input = document.getElementById("search-input");
|
const input = document.getElementById("search-input");
|
||||||
|
|
||||||
|
// https://stackoverflow.com/a/3809435/16804841
|
||||||
|
const expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/gi;
|
||||||
|
const urlRegex = new RegExp(expression);
|
||||||
|
|
||||||
const searchEngines = {
|
const searchEngines = {
|
||||||
"g": {
|
"g": {
|
||||||
action: "https://www.google.com/search/",
|
action: "https://www.google.com/search",
|
||||||
name: "q",
|
name: "q",
|
||||||
},
|
},
|
||||||
"d": {
|
"d": {
|
||||||
@ -22,17 +26,33 @@ const searchEngines = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// https://stackoverflow.com/a/3809435/16804841
|
|
||||||
const expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/gi;
|
|
||||||
const urlRegex = new RegExp(expression);
|
|
||||||
|
|
||||||
form.addEventListener("submit", event => {
|
form.addEventListener("submit", event => {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
s = input.value;
|
s = input.value;
|
||||||
|
|
||||||
// check if url
|
// check if url
|
||||||
if (s.match(urlRegex)) {
|
if (s.match(urlRegex)) {
|
||||||
event.preventDefault();
|
|
||||||
window.open(s, "_self");
|
window.open(s, "_self");
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if the string starts with ! followed by a key from searchEngines
|
||||||
|
let selectedEngine = {
|
||||||
|
action: form.getAttribute("action"),
|
||||||
|
name: input.getAttribute("name"),
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const [key, value] of Object.entries(searchEngines)) {
|
||||||
|
const prefix = `!${key} `;
|
||||||
|
if (s.startsWith(prefix)) {
|
||||||
|
selectedEngine = value;
|
||||||
|
s = s.slice(prefix.length); // Remove the !{key} prefix
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const url = new URL(selectedEngine.action);
|
||||||
|
url.searchParams.set(selectedEngine.name, s.trim());
|
||||||
|
window.open(url.toString(), "_self");
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user