Greinaskrá
Þú hélst að vefsíðan væri fín og JS kóðinn stöðugur eins og gamall hundur, en um leið og þú skiptir um farsímaútgáfu „fór síðan í verkfalli“?
Það fáránlegasta er að það virkar venjulega í tölvu en hunsar þig algjörlega í Android síma.
Þetta er ekkert grín, þetta er vandamál með vafra sem hefur verið að gerast hljóðlega.
Rót vandans: Það er ekki að þú hafir skrifað þetta rangt, heldur að tíminn hefur yfirgefið þig.

Reyndar, þegar flestir forritarar sjá þetta fyrirbæri, er fyrsta viðbrögð þeirra: Er einhver villa í JS setningafræðinni? Er DOM ekki hlaðið inn? Eða er heimildin læst?
Niðurstaðan? Engin þeirra. Hinn raunverulegi sökudólgur reyndist vera þessi forna rit:
<script language="javascript">
Þessi kóðalína var ótrúlega vinsæl fyrir 20 árum ; þú gast séð hana í öllum kennslumyndböndum.
En Chromium útgáfa 119Eftir það sagði Google bless við þessa „fornmálfræði“: svo lengi sem þú sérð language Eiginleika, þá mun vafrinn hunsa þá valkvætt og ekki einu sinni nenna að útskýra þá.
Vegna samhæfni er Chrome á skjáborði enn að „sjá þetta tímabundið“; en Chrome á snjalltækjum með Android er „framvarðarliðið“ og virkjaði þessa hreinsunaraðferð strax.
Þetta leiddi til þess að tölvan virkaði eðlilega en farsíminn bilaði.
Hvers vegna tók Android fyrst til aðgerða?
Sumir gætu spurt: Af hverju er Android Chrome sett á markað fyrst?
Þetta er mjög einfalt, því uppfærsluhraði farsímans er hraðari og Google sendir upplýsingar jafn hratt og rauð umslög.
Þann 31. október 2023 var Chrome 119 fyrir Android að fullu kynnt í gegnum Google Play.
Þó að skjáborðsútgáfan noti einnig Chromium kjarnann er venja að „halda sér við efnið“ til að forðast að sprengja skyndilega fjölda innri fyrirtækjakerfa.
Svo ef þú notar enn orðasambandið „language=javascript„, á Android símum jafngildir þetta því að skrifa gegnsæjan kóða sem vafrinn hunsar beint.
Lausn: Kláraðu þetta á þremur sekúndum
Sem betur fer er lausnin á þessu vandamáli ótrúlega einföld. Skiptu bara út þessari línu:
<script>
Eða aðeins formlegri:
<script type="text/javascript">
Það tekur aðeins nokkrar sekúndur að breyta því og Android Chrome mun keyra það strax.
Mundu að þvinga uppfærslu skyndiminnsins eftir að breytingar eru gerðar ; annars gæti vafrinn enn verið að lesa gömlu skrána. Aðferðin er einföld:
- Tölva: Ctrl + F5
- Sími: Stillingar → Persónuvernd → Hreinsa skyndiminni
Þegar kóðinn hefur verið uppfærður er hann endurvakinn á nokkrum sekúndum og síðan byrjar að birtast aftur.
Þetta er í raun „uppgjör“
Að lokum var þetta vandamál ekki með JavaScript sjálft, heldur uppgjör við eldri framhliðarkóða.
Það sem vafraframleiðendur þurfa að gera er mjög skýrt: smám saman hreinsa upp úrelta setningafræði og neyða forritara til að uppfæra.
Þetta er eins og þjóðvegur: þríhjól og dráttarvélar máttu aka hlið við hlið áður en nú þarf að keyra þau burt af öryggisástæðum. language="javascript" Þessi dráttarvél hefði ekki átt að vera á hraðbrautinni.
Hvað ættu verktaki að fylgjast með?
Þessi atburður er okkur mjög raunhæf áminning:
Kóðastíll skiptir miklu máli. Kóði sem þú heldur að „þurfi bara að keyra“ gæti bilað í síðari útgáfum.
Prófunarumhverfið þarf að halda í við þróunina. Ekki bara smella í gegnum Chrome í tölvunni þinni og sleppa því. Þú þarft að prófa það á snjalltækjum og mismunandi útgáfum af vöfrum.
Fylgstu með uppfærsluskrám vafra. Uppfærslur á Chromium koma alltaf með fjölda af „úrelting og fjarlæging“ skilaboðum. Þetta er ekki bara til sýnis; það getur í raun eyðilagt fyrirtækið þitt.
Niðurstaða: Að baki kóðalínu leynist tækniþróun
Margir kvarta yfir því að Google sé „siðlaust“ en frá hærra sjónarhorni er þetta í raun óhjákvæmilegt ferli sem knýr allt vistkerfi vefsins áfram.
Að útrýma gömlum eiginleikum og neyða forritara til að fylgja stöðlum er endurtekning tæknilegrar siðmenningar.
Ef við höldum áfram að vera samhæfð allri úreltri setningafræði, þá mun framhliðin fyrr eða síðar verða að potti af niðurníddu hráefni.
Þess vegna, þegar við gerum við þessa litlu gryfju, erum við í raun að taka þátt í „hreinsunarhreyfingu tæknilegrar siðmenningar“.
Á komandi árum munu svipaðar gryfjur aðeins aukast og eina lausnin er að fylgjast með tímanum og tileinka sér reglugerðir.
Lokasamantekt
- Tölvur geta keyrt þetta en Android ekki, því...
<script language="javascript">Úrelt. - frá Chromium 119 Android Chrome tekur forystuna í að sleppa
languageEiginleiki<script>块. - Lausnin er: nota
<script>Eða<script type="text/javascript">. - Eftir breytinguna skaltu endurnýja skyndiminnið og vandamálið mun lagast.
- Forritarar ættu alltaf að fylgjast með uppfærslum á vöfrum og tileinka sér þann vana að skrifa kóða á stöðluðum hátt.
Svo næst þegar þú rekst á undarlega villu þar sem tölvan virkar fínt en síminn ekki, gætirðu alveg eins hugsað um þetta: Er einhver „minjar frá síðustu öld“ falin í kóðanum þínum?
Vonandi verður greinin „Af hverju mistekst JS kóði í Android Chrome? Ástæður fyrir því að keyrsla mistekst afhjúpaðar og lausn með einum smelli!“ sem birtist á bloggi Chen Weiliang ( https://www.chenweiliang.com/ ) gagnleg fyrir þig.
Deilið endilega tenglinum á þessa grein: https://www.chenweiliang.com/cwl-33236.html
