TCH (statz) | #1, Főfasz (10466) |
5459 | #542c | ^ | Idézet | Wed, 06 Oct 2021 19:55:52 +02 |
178.164.*.* | *.pool.digikabel.hu |
Áááá, dehogy, hova gondolsz... :P Get cursor position in input type number = Mission: Impossible? Kezdetben vala az text típusú input. A különféle number-only szövegmezőket ezzel és egy sereg jávaszkriptes taknyolással oldották meg, mert nem vala más megoldás. Aztán eljövé az Úr 2008-as esztendeje és vele együtt az HTML5, benne sok baromsággal, de jó dolgokkal is. Ezek közé tartozott a number típusú input, ami a beállítható intervallumával, lépésközével jelentősen lecsökkenté vala az szükséges jávaszkriptes gányolások mennyiségét. Külön jó a mező végébe suvasztott kis léptető, ami olykor még hasznos is bír lenni (egy egérkattintással gyorsabban lehet mondjuk 999-ről 1000-re ugrasztani valamit, mint a kitörléssel és újra beírással), de ha nem az, legalább lekapcsolható. És még jobb, hogy mobilokon ebbe kattintva alapból a numerikus billentyűzet jön fel. Sajnos az okos emberek kifelejtették vala az sima integer típusú input-ot a repertoárból, így ha azt akará vala az büdös programmere, hogy ne is fogadja el a mező (értsd: be se lehessen írni) pl. a pontot, vagy az "e" betűt, mínuszjelet meg csak egyet az elejére (nem, a pattern ezt nem gátolja meg), akkor ahhoz ismét jávaszkript kellett, de legalább megoldható vala vele. Aztán eltelé pár év, eljőve 2014 és publikálóda az HTML5 2014 edisön, benne az, hogy a number - és jópár egyéb - típusú mezőkön a selectionStart és a selectionEnd ne legyen használható, mert csak, mert ezt főzték ki a marha okosok az büdös internyetes "szabvány""hivatalban". Igaz, hogy több mint egy fél évtizede tökéletesen működik, de ez így akkor sem jó és punktum. Indoklás nincs, csak az, hogy "do not apply". És az nagy brózergyártók ugornak vala és implementálák izibe ezt a kozmikus méretű baromságot és sok-sok webkóder hirtelen beszopá az nagy digitális faszt, mert bedöglék az kódja vala. Megreklamálák eztet vala az nagy brózergyártóknál (pl. Chrome #1, Chrome #2, Firefox #1, Firefox #2), de csak kapák az egy darab egyujjas nemzetközi jelzést, hogy ez pedig innentől nem támogatott, mert csak és kész; indoklás - hogy mitől jobb ez így, miért kell ezt így, ha eddig működött - doszta nincs. Kuss vagyon, köcsög júzerek. Engem eddig megkímélt a sors attól, hogy ezzel kelljen szívnom, hogy number típusú mezőkben kijelöléssel kelljen bíbelődnöm, de most ez a perc is elérkezett. A keresgetés nem sok eredményt hozott, mindenütt azt javasolják, hogy használj text típusút és írd meg hozzá a jávaszkriptes gányolásaidat, mint a 2008 - és a HTML5 - előtti régi, de ebből a szempontból nem annyira szép időkben. Csudálatos mire képes manapság ez a fejlett technika. Aztán beleakadtam egy olyan tippbe, hogy át kell állítani a mező típusát text-re, lekérni, majd visszaállítani. Ezt kipróbáltam, de sajnos az átállítás után annyi volt a különbség, hogy a selectionStart és selectionEnd már nem null volt, hanem nulla, függetlenül a kurzor pozíciójától és a kijelöléstől. Aztán kattant valami az agyamnak hívott szartenger mélyén és kipróbáltam, hogy mi történik, ha megvárom, hogy "beálljon" a mező. Nullás várakoztatási idővel meghívott setTimeout-ba raktam a type lecserélése utáni részt és hirtelen meggyógyult, működni kezdett én meg örülni kezdtem, hogy sikerült kicselezni ezt a baromságot. Hittem én nagy naívan, ugyanis a túloldalt üldögélő Sanyi szólt, hogy neki viszont nem megy. A nálam lévő Ungoogled Chromium 73-assal ez a snippet még tökéletesen működik, de a nála lévő kilencvenvalahanyas Chrome-ban a type lecserélése a kurzornak a nulladik pozícióba ugrását eredményezi, holott ezt senki nem kérte és a v73-ban még nem is csinálta. (Firefoxban (Pale Moon-ban/IceWeasel-ben) ugyanez történik, de ott a jelek szerint ez már régebben is így volt, hogy a típus lecserélése elugrasztja a kurzort.) A szomorú az egészben, hogy igazából tényleg nem lehet megindokolni semmivel, mert leimplementálhatatlanságról nem beszélhetünk, ha korábban már működött és a működés fizikai megszűnéséről sem beszélhetünk, hiszen a kurzor és a kijelölés, valamint a copy/paste továbbra is megy ezeken a mezőkön, sőt átkapcsolva text-re továbbra is lekérdezhető, tehát a mechanizmus a motorban nem szűnt meg. Csak letiltották a hozzáférést. És ennek se értelme, se haszna. Így csak egy dolgot értek el: még több jávaszkriptet, mert nem elég, hogy vissza kell térni a régi text típusú input-tal való taknyoláshoz, de mindezt úgy, hogy a webes fejlesztői kultúra viszont már nem a régi, így azt, amit 15 éve pár kB-nyi natúr JS kódból megoldottak, ahhoz ma betöltenek több MB-nyi JS framework-öt... És mindezt úgy, hogy a HTML5 nem szabvány, hanem ajánlás, tehát a kutya nem kötelezte őket erre. Júzerszopatás as a Service. Na, ebből is csak a hardwaregyárak profitálnak, hogy a webet beborítja a szutyokszkript bloated szennye. |