Files
webextensions-examples/history-deleter/history.js
rebloor 82217a05bc Replace var with let in examples (#484)
* Replace var with let in examples

store-collected-images/webextension-plain/deps/uuidv4.js

* Reverted third–party code
2022-08-11 04:27:28 +12:00

80 lines
2.3 KiB
JavaScript

// A useful way to extract the domain from a url.
function get_hostname(url) {
let a = document.createElement('a');
a.href = url;
set_domain(a.hostname);
return a.hostname;
}
function set_domain(domain) {
const spans = document.getElementsByClassName('domain');
[].slice.call(spans).forEach((span) => {
span.textContent = domain;
});
}
function no_history(hostname) {
let history_text = document.getElementById('history');
while(history_text.firstChild)
history_text.removeChild(history_text.firstChild);
history_text.textContent = `No history for ${hostname}.`;
}
function getActiveTab() {
return browser.tabs.query({active: true, currentWindow: true});
}
// When the page is loaded find the current tab and then use that to query
// the history.
getActiveTab().then((tabs) => {
let list = document.getElementById('history');
let hostname = get_hostname(tabs[0].url);
// Search for all history entries for the current windows domain.
// Because this could be a lot of entries, lets limit it to 5.
let searchingHistory = browser.history.search({text: hostname, maxResults: 5});
searchingHistory.then((results) => {
// What to show if there are no results.
if (results.length < 1) {
no_history(hostname);
} else {
for (let k in results) {
let history = results[k];
let li = document.createElement('p');
let a = document.createElement('a');
let url = document.createTextNode(history.url);
a.href = history.url;
a.target = '_blank';
a.appendChild(url);
li.appendChild(a);
list.appendChild(li);
}
}
});
});
function clearAll(e) {
getActiveTab().then((tabs) => {
let hostname = get_hostname(tabs[0].url);
if (!hostname) {
// Don't try and delete history when there's no hostname.
return;
}
// Search will return us a list of histories for this domain.
// Loop through them and delete them one by one.
let searchingHistory = browser.history.search({text: hostname})
searchingHistory.then((results) => {
for (let k in results) {
browser.history.deleteUrl({url: results[k].url});
}
// Clear out the UI.
no_history(hostname);
}
);
});
e.preventDefault();
}
document.getElementById('clear').addEventListener('click', clearAll);