He buscado por todas partes para tratar de resolver estos problemas, probé diferentes códigos, pero no puedo resolverlos.
En mi constante, he agregado un .search para agregar código al final de una URL, esto funciona para los ejemplos de Google y Amazon.
El ejemplo de Google, el resultado de la búsqueda agrega un "?" a la cadena y no puedo averiguar de dónde viene esto.
El ejemplo de Amazon, el resultado de la búsqueda elimina el resultado de entrada y lo lleva a una URL negra sin el resultado de la búsqueda.
const myGoogleUrl = new URL("https://www.google.co.uk"); myGoogleUrl.search = "&source=lnms&tbm=isch&sa=X&ved="; const myAmazonUrl = new URL("https://www.amazon.co.uk"); myAmazonUrl.search = "&i=instant-video"; const formHandler = (event) => { event.preventDefault(); let form = event.currentTarget, format = { getParameters: function() { form.submit(); }, rest: function() { window.open(`${form.action}${form.q.value.trim()}`); }, googleAttach: function() { window.open(`${form.action}${form.q.value}${myGoogleUrl.search}`); }, amazonAttach: function() { window.open(`${form.action}${form.q.value}${myAmazonUrl.search}`); }, }; format[form.dataset.searchmethod](); }; document .querySelectorAll("form") .forEach((form) => form.addEventListener("submit", formHandler)); <body> <h1>Hello Test Title</h1> <form id="google" action="https://www.google.co.uk/search?q=" target="_blank" data-searchmethod="googleAttach"> <input type="text" name="q"> <button>Search Google Images</button> </form> <form action="https://en.wikipedia.org/w/index.php?search=" target="_blank" data-searchmethod="rest"> <input type="text" name="q"> <button>Search Wiki</button> </form> <form action="https://www.amazon.co.uk/s?k=" target="_blank" data-searchmethod="amazonAttach"> <input type="text" name="q"> <button>Search Amazon Videos</button> </form> </body>En una nota al margen, he estado leyendo ¿Cómo hago una buena pregunta? ya que mis preguntas de publicaciones anteriores no han sido bien escritas. Estoy tratando de mejorar esto lo mejor que puedo. Espero que esta publicación esté más en línea con las reglas ahora.