Een aangepaste versie die iemand verspreidt moet voortaan zijn broncode meegeven. Bij client-side JavaScript telt het uitserveren naar een browser als verspreiden, dus dit dekt ook het geval dat iemand de code in zijn eigen webapp bouwt. Beide scripts krijgen een hogere @version, anders komt de nieuwe licentieregel nooit bij wie het al geinstalleerd heeft. Wat al onder MIT gepubliceerd is blijft onder MIT beschikbaar; dit geldt vanaf deze versies.
select-search
Geeft elke <select> met veel opties een zoekveld. Een native dropdown zoekt alleen op de eerste
letters, dus "Poule" vinden in "Restaurant Poule & Poulette B.V." lukt niet. Met dit script wel.
Het originele <select> blijft de bron van waarheid en wordt enkel verborgen. Het formulier
verstuurt dus exact hetzelfde als voorheen.
Installeren · gebeurt er niets, zie de installatie-uitleg.
Gebruik
Klik een dropdown aan en typ.
- Zoekt op substring, negeert accenten:
geneevindtGenée. - Meerdere woorden in willekeurige volgorde:
poule restvindtRestaurant Poule & Poulette B.V. - Pijltjes navigeren, Enter kiest, Escape sluit, Tab kiest en gaat verder.
- Dropdowns met minder dan 10 opties blijven onaangeroerd.
- Boven 200 treffers toont het enkel het aantal. Verfijn dan je zoekterm.
Problemen
| Symptoom | Oplossing |
|---|---|
| Eén veld doet raar | Alt+klik op het zoekveld zet daar het originele menu terug |
| Veld moet altijd overgeslagen | Zet data-nosearch op de <select> |
| Niets gebeurt op de pagina | Check in het Tampermonkey-dashboard of de URL onder @match valt |
| Formulier zit in een iframe van een ander domein | Niet op te lossen, browserbeperking |
Bookmarklet
Alternatief zonder extensie, voor wie geen extensies mag installeren. Werkt overal, maar je klikt hem zelf aan per pagina.
- Kopieer de inhoud van
bookmarklet.txt. - Maak een bladwijzer met naam
Zoek in dropdownen die tekst als URL. - Klik hem aan op de pagina met de dropdown. Nog eens klikken doet een herscan.
Sites met een strikte Content-Security-Policy blokkeren bookmarklets. Dan is de extensie de enige route.
Ontwikkelen
src/select-search.js bevat de volledige logica, zonder dependencies.
./build.sh # genereert select-search.user.js en bookmarklet.txt
python3 -m http.server 8731 # open http://localhost:8731/test/fixture.html
Hoog bij elke wijziging @version op in src/userscript-header.txt, anders krijgt niemand de
update binnen.