Advertisement
Guest User

Untitled

a guest
Dec 17th, 2021
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 2.13 KB | None | 0 0
  1. <style>
  2.   #search {
  3.     display: flex;
  4.     align-items: center;
  5.     justify-content: center;
  6.     margin: 2rem 0;
  7.   }
  8. </style>
  9. <body>
  10.  
  11. <div id="container">
  12.   <form id="search">
  13.     <div>
  14.       <label>Search <input id="query" placeholder="Query..." required></label>
  15.       <input type="submit" value="Update Links">
  16.       <input type="submit" id="openTabs" value="Open All Tabs">
  17.     </div>
  18.   </form>
  19.  
  20.   <div id="search-engine-links">
  21.     <ul>
  22.  
  23.     </ul>
  24.   </div>
  25.  
  26. </div>
  27.  
  28. <template id="search-engine-link-tpl">
  29.   <li><a href="" target="_blank"></a></li>
  30. </template>
  31.  
  32. <script>
  33.   (function(){
  34.     const engines = [
  35.       {name: 'qwant', url: 'https://www.qwant.com/?q='},
  36.       {name: 'yandex', url: 'https://yandex.com/search/?text='},
  37.       {name: 'searx.be', url: 'https://searx.be/search?categories=general&q='},
  38.      {name: 'search.brave.com', url: 'https://search.brave.com/search?q='},
  39.    ];
  40.  
  41.     const searchEngineLinkTpl = document.querySelector('#search-engine-link-tpl');
  42.     const searchForm = document.querySelector('#search');
  43.     const queryInput = document.querySelector('#query');
  44.     const openTabsButton = document.querySelector('#openTabs');
  45.     const searchLinks = document.querySelector('#search-engine-links ul');
  46.  
  47.     function renderSearchLinks(searchText, openTabs) {
  48.       searchLinks.innerHTML = '';
  49.       engines.forEach(engine => {
  50.         const url = engine.url + encodeURIComponent(searchText);
  51.         const node = searchEngineLinkTpl.content.cloneNode(true);
  52.         const a = node.querySelector('a');
  53.         a.textContent = `${engine.name} | ${url}`;
  54.         a.href = engine.url + encodeURIComponent(searchText);
  55.         searchLinks.appendChild(node);
  56.  
  57.         if (openTabs) {
  58.           a.click();
  59.         }
  60.       });
  61.  
  62.     }
  63.  
  64.     function update(evt) {
  65.       evt.preventDefault();
  66.       const autoOpenTabsButtonClicked = document.activeElement === openTabsButton;
  67.       renderSearchLinks(queryInput.value, autoOpenTabsButtonClicked);
  68.     }
  69.  
  70.     queryInput.addEventListener('input', update);
  71.     searchForm.addEventListener('submit', update);
  72.  
  73.   })();
  74. </script>
  75.  
  76. </body>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement