browser.tabs.executeScript({ code: ` var links = document.links; var pageLinks = []; for (var i = links.length - 1; i >= 0; i--) { if (links[i].href && !links[i].href.includes("javascript:void")) { pageLinks.push({ href: links[i].href, host: links[i].host, hostname: links[i].hostname, origin: links[i].origin, text: links[i].text, }); } } browser.runtime.sendMessage({links: pageLinks}); ` }) function clearChildren(parent) { while (parent.firstChild) { parent.removeChild(parent.firstChild); } } function getlinks(request,sender,sendResponse) { var pageLinks = request.links; var linkel = document.getElementById("links"); clearChildren(linkel); for (var i = pageLinks.length - 1; i >= 0; i--) { var li = document.createElement("li"); li.setAttribute("index", i); li.textContent = pageLinks[i].text + " " + pageLinks[i].href; linkel.appendChild(li); } } function filter(inputID, ulID) { var input, filter, ul, li, i, txtValue; input = document.getElementById(inputID); ul = document.getElementById(ulID); filter = input.value.toUpperCase(); ul = document.getElementById(ulID); li = ul.getElementsByTagName("li"); for (i = 0; i < li.length; i++) { txtValue = li[i].textContent || li[i].innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { li[i].style.display = ""; } else { li[i].style.display = "none"; } } } browser.runtime.onMessage.addListener(getlinks) document.getElementById("linkFilter").onkeyup = function() { filter('linkFilter', 'links') }