Каталог артыкулаў
- 1 Корань праблемы: справа не ў тым, што ты напісаў няправільна, а ў тым, што час цябе пакінуў.
- 2 Чаму Android першым прыняў меры?
- 3 Рашэнне: Зрабіце гэта за тры секунды
- 4 Гэта фактычна «ліквідацыя»
- 5 На што варта звярнуць увагу распрацоўшчыкам?
- 6 Выснова: За радком кода хаваецца тэхналагічная эвалюцыя
- 7 Канчатковае змест
Вы думалі, што сайт нармальны, а JS-код стабільны, як стары сабака, але як толькі вы змянілі мабільную версію браўзера, старонка "забаставала"?
Самае неверагоднае: камп'ютар працуе нармальна,AndroidАле тэлефон цалкам ігнаруе вас.
Гэта не жарт, гэта праблема з браўзерам, якая ўзнікае ціха.
Корань праблемы: справа не ў тым, што ты напісаў няправільна, а ў тым, што час цябе пакінуў.

Насамрэч, калі большасць распрацоўшчыкаў бачаць гэтую з'яву, іх першая рэакцыя: ці ёсць памылка ў сінтаксісе JS? Ці не загружаны DOM? Ці дазвол заблакаваны?
Вынік? Ніводнага. Сапраўднай віной аказалася старажытная пісьменнасць:
<script language="javascript">
Гэты радок кода быў папулярны 20 гадоў тамунеабмежаваны, што можна ўбачыць ва ўсіх падручніках.
Але ў Версія Chromium 119Пасля гэтага Google развітаўся з гэтай «антыкварнай граматыкай»: галоўнае, каб вы бачылі language Атрыбуты, браўзер будзе выбарачна ігнараваць іх і нават не патурбуецца іх тлумачыць.
З меркаванняў сумяшчальнасці Chrome на настольных кампутарах усё яшчэ «часова клапоціцца пра гэта»; але Chrome на мабільных прыладах Android з'яўляецца «авангардам» і адразу ж уключыў гэтую стратэгію ачысткі.
Так яно і з'явілася:Кампутар працуе добра, але мабільны тэлефон не працуеПраблема.
Чаму Android першым прыняў меры?
Некаторыя могуць спытаць: чаму Android Chrome запускаецца першым?
Гэта вельмі проста, бо тэмпы абнаўлення мабільнага тэрмінала хутчэйшыя, а Google перадае інфармацыю з такой жа хуткасцю, як і чырвоныя канверты.
在 2023 年 10 月 31 日Версія Chrome 119 для Android была цалкам прасоўвана праз Google Play.
Нягледзячы на тое, што ў настольнай версіі таксама выкарыстоўваецца ядро Chromium, прынята «трымаць руку пад кантролем», каб пазбегнуць раптоўнага збою вялікай колькасці ўнутраных карпаратыўных сістэм.
Такім чынам, калі вы ўсё яшчэ выкарыстоўваеце фразу «language=javascript«, на тэлефонах Android гэта эквівалентна напісанню празрыстага кода, які браўзер непасрэдна ігнаруе.
Рашэнне: Зрабіце гэта за тры секунды
На шчасце, выпраўленне гэтай праблемы неверагодна простае. Проста заменіце гэты радок:
<script>
Ці крыху больш фармальна:
<script type="text/javascript">
Змяніць яго можна ўсяго за некалькі секунд, і Android Chrome адразу ж яго выканае.
Памятайце, што пасля мадыфікацыіПрымусовае абнаўленне кэшаУ адваротным выпадку браўзер можа ўсё яшчэ чытаць стары файл. Метад таксама просты:
- Камп'ютар: Ctrl + F5
- Тэлефон: Налады → Прыватнасць → Ачысціць кэш
Пасля абнаўлення код аднаўляецца праз некалькі секунд, і старонка зноў пачынае працаваць.
Гэта фактычна «ліквідацыя»
У канчатковым выніку, праблема на гэты раз не ў самой JS, а ўЭпоха старога франт-энд-кода.
Вытворцам браўзераў трэба зрабіць вельмі зразумела: паступова ачысціць састарэлы сінтаксіс і прымусіць распрацоўшчыкаў абнаўляцца.
Гэта як шаша: раней трохколавыя і трактары маглі ездзіць побач, а цяпер з меркаванняў бяспекі іх даводзіцца выганяць. language="javascript" Гэты трактар не павінен быў быць на хуткаснай паласе.
На што варта звярнуць увагу распрацоўшчыкам?
Гэты інцыдэнт служыць нам вельмі рэалістычным напамінам:
Стандарты кадавання сапраўды важныя Код, які, на вашу думку, "проста працуе", можа перастаць працаваць у пэўнай версіі.
Тэставае асяроддзе павінна ісці ў нагу з тэмпам Не проста націсніце і апублікуйце ў Chrome на вашым камп'ютары. Вам трэба праверыць гэта на мабільных прыладах і ў розных версіях браўзераў.
Сачыце за журналамі абнаўленняў браўзера Кожны раз, калі Chromium абнаўляецца, з'яўляецца шмат "састарэлых" і выдаленых паведамленняў. Гэта не дэкарацыі, але яны сапраўды забіваюць ваш бізнес.
Выснова: За радком кода хаваецца тэхналагічная эвалюцыя
Многія людзі скардзяцца, што Google «неэтычны», але з больш шырокага пункту гледжання гэта насамрэч непазбежны працэс, які рухае наперад усю вэб-экасістэму.
Выкараненне старых атрыбутаў і прымус распрацоўшчыкаў прытрымлівацца стандартаў — гэта ітэрацыя тэхналагічнай цывілізацыі.
Калі мы будзем працягваць сумяшчаць з усім састарэлым сінтаксісам, фронтэнд рана ці позна ператворыцца ў гаршчок разбуранай салянкі.
Таму, калі мы рамантуем гэтую невялікую яму, мы фактычна ўдзельнічаем у «ачышчальным руху тэхналагічнай цывілізацыі».
У бліжэйшыя некалькі гадоў падобных пастак будзе ўсё больш і больш, і адзіным супрацьдзеяннем будзеІдзіце ў нагу з часам і прытрымлівайцеся стандартаў.
Канчатковае змест
- Камп'ютары могуць яго запусціць, але Android не можа, таму што
<script language="javascript">Састарэла. - з хром 119 Android Chrome займае лідзіруючыя па колькасці пропускаў
languageАтрыбут<script>кавалак. - Рашэнне такое: выкарыстоўваць
<script>Або<script type="text/javascript">. - Пасля мадыфікацыі абнавіце кэш, і праблема будзе адноўлена.
- Распрацоўшчыкам варта заўсёды звяртаць увагу на абнаўленні браўзера і развіваць звычку пісаць код стандартызаваным чынам.
Такім чынам, калі наступным разам вы сутыкнецеся з дзіўнай памылкай, з-за якой камп'ютар працуе нармальна, але тэлефон не, вы можаце падумаць пра наступнае: ці не схаваны ў вашым кодзе «рэлікт мінулага стагоддзя»?
Блог Hope Chen Weiliang ( https://www.chenweiliang.com/ ) падзяліўся паведамленнем «Чаму JS-код не выконваецца ў Android Chrome? Прычына невыканання раскрытая, і ёсць рашэнне ў адзін клік!», якое можа быць вам карысным.
Запрашаем падзяліцца спасылкай на гэты артыкул:https://www.chenweiliang.com/cwl-33236.html
