1function openURL(url) {2 chrome.tabs.create({ "url": url })3}45function addLinks() {6 var links = document.getElementsByTagName("a");7 for (var i = 0; i < links.length; i++) {8 var url = links[i].getAttribute("url");9 if (url)10 links[i].addEventListener("click", function () {11 openURL(this.getAttribute("url"));12 });13 }14}1516window.addEventListener("load", function () {17 addLinks();18 console.log("hacking gopher pop-up loaded.");19 document.getElementById("inputbox").focus();20});2122window.addEventListener("submit", function () {23 console.log("submitting form");24 var box = document.getElementById("inputbox");25 box.focus();2627 var t = box.value;28 if (t == "") {29 return false;30 }3132 var success = function(url) {33 console.log("matched " + t + " to: " + url)34 box.value = "";35 openURL(url);36 return false; // cancel form submission37 };3839 var url = urlForInput(t);40 if (url) {41 return success(url);42 }4344 console.log("no match for text: " + t)45 return false;46});
Code quality findings 16
Remove event listeners when no longer needed to prevent memory leaks
warning
performance
event-listener-leak
links[i].addEventListener("click", function () {
Remove event listeners when no longer needed to prevent memory leaks
warning
performance
event-listener-leak
window.addEventListener("load", function () {
Remove event listeners when no longer needed to prevent memory leaks
warning
performance
event-listener-leak
window.addEventListener("submit", function () {
Use let or const to avoid scope issues and hoisting
info
correctness
var-declaration
var links = document.getElementsByTagName("a");
Use let or const to avoid scope issues and hoisting
info
correctness
var-declaration
for (var i = 0; i < links.length; i++) {
Use let instead of var in loops to avoid scope issues
info
correctness
var-in-loop
for (var i = 0; i < links.length; i++) {
Use let or const to avoid scope issues and hoisting
info
correctness
var-declaration
var url = links[i].getAttribute("url");
Remove debugging statements or use a logging library
info
correctness
console-log
console.log("hacking gopher pop-up loaded.");
Remove debugging statements or use a logging library
info
correctness
console-log
console.log("submitting form");
Use let or const to avoid scope issues and hoisting
info
correctness
var-declaration
var box = document.getElementById("inputbox");
Use let or const to avoid scope issues and hoisting
info
correctness
var-declaration
var t = box.value;
Use strict equality (===) to prevent type coercion bugs
info
correctness
loose-equality
if (t == "") {
Use let or const to avoid scope issues and hoisting
info
correctness
var-declaration
var success = function(url) {
Remove debugging statements or use a logging library
info
correctness
console-log
console.log("matched " + t + " to: " + url)
Use let or const to avoid scope issues and hoisting
info
correctness
var-declaration
var url = urlForInput(t);
Remove debugging statements or use a logging library
info
correctness
console-log
console.log("no match for text: " + t)