Чаму JS-код не працуе на Android і Chrome? Выкрыта: рашэнне ў адзін клік!

Вы думалі, што сайт нармальны, а JS-код стабільны, як стары сабака, але як толькі вы змянілі мабільную версію браўзера, старонка "забаставала"?

Самае неверагоднае: камп'ютар працуе нармальна,AndroidАле тэлефон цалкам ігнаруе вас.

Гэта не жарт, гэта праблема з браўзерам, якая ўзнікае ціха.

Корань праблемы: справа не ў тым, што ты напісаў няправільна, а ў тым, што час цябе пакінуў.

Чаму JS-код не працуе на Android і Chrome? Выкрыта: рашэнне ў адзін клік!

Насамрэч, калі большасць распрацоўшчыкаў бачаць гэтую з'яву, іх першая рэакцыя: ці ёсць памылка ў сінтаксісе 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" Гэты трактар ​​не павінен быў быць на хуткаснай паласе.

На што варта звярнуць увагу распрацоўшчыкам?

Гэты інцыдэнт служыць нам вельмі рэалістычным напамінам:

  1. Стандарты кадавання сапраўды важныя Код, які, на вашу думку, "проста працуе", можа перастаць працаваць у пэўнай версіі.

  2. Тэставае асяроддзе павінна ісці ў нагу з тэмпам Не проста націсніце і апублікуйце ў Chrome на вашым камп'ютары. Вам трэба праверыць гэта на мабільных прыладах і ў розных версіях браўзераў.

  3. Сачыце за журналамі абнаўленняў браўзера Кожны раз, калі 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

Каб адкрыць больш схаваных хітрасцяў🔑, далучайцеся да нашага канала ў Telegram!

Падзяліцеся і пастаўце лайкі, калі вам гэта падабаецца! Вашы акцыі і лайкі - наша пастаянная матывацыя!

 

发表 评论

Ваш электронны адрас не будзе апублікаваны. 必填 项 已 用 * Этыкетка

Пракрутка да пачатку