js module на мобильном
Опять столкнулся с какой то хренью на мобильниках (Андроид, Crome - последняя версия)
Сейчас переделываю один проект, там требуется менять как можно меньше в html, только почистить (от jquery и по возможности от др. библиотек) и дополнить скрипты. Стал использовать модули ES6 Было у них <script src="./kld-js.js"></script> Переделал на модули, стало <script type="module" src="./kld-js.js"></script> Все прекрасно работает на десктопе, в режиме эмуляции мобильника в средствах разработчика... Но не на настоящем мобильнике. Отлаживаться непосредственно на мобильнике та еще песня, но вставкой в код алертов пришел к выводу, что скрипт не грузится вообще. Стал действовать методами научного и не научного тыков. Переименовал файл <script type="module" src="./kld_js.js"></script> Все прекрасно работает и на мобильнике. Переименовываю назад - опять не работает. Стал думать, может чего у меня в настройках сервера не так (хотя с чего бы - ведь на десктопе то все грузится), обнаружил, что в логах вообще нет обращений к ./kld-js.js, когда запрос идет с мобильника, но есть, когда запрос идет с десктопа. Опять стал экспериментировать - переименовал так <script type="module" src="./kld-js.mjs"></script> Стало работать и на мобильнике. Интересно то, что <script type="module" src="./alive-data.js"></script> грузится нормально - так, что символ "-" тут ни при чем. Чего то я не понимаю, что происходит. |
nype
|
Цитата:
В коде то все как положено. |
Продолжил экперименты
Заменил <script type="module" src="./kld-js.js"></script> На <script type="module"> try { await import('./kld-js.js') } catch (err) { alert (err) } </script> На десктопе все прекрасно, на мобиле получаю алерт Цитата:
Ничего не понимаю :( :( |
Мне лень проверять, но случаем на мобиле у тебя никакого болкировщика рекламы не стоит?
|
А хрен его знает? Я вроде ничего не ставил.
Рекламы до фига идет А как там посмотреть? Ради интереса проверил на Файрфоксе на мобиле. Все работает |
voraa, а где не работает? В chrome или safari? Это две большие разницы.
|
В chrome на android
|
Цитата:
|
Цитата:
Так даже десктоп дает ошибку TypeError: Failed to resolve module specifier 'kld-js.js' |
Там вообще похоже проблемы не в модулях и не в js.
В чем не пойму. Кто то почему то где то блокирует обращение к этому файлу. Именно к этому. Стоит его хоть как то переименовать (kld1-js.js, akld-js.js ) - все начинает работать Блокировка довольно странно проявляется. Сервер, на котором я все это роблю - мой домашний комп. Есть вай-фай роутер с внешним статическим ip, полученным от провайдера. комп подключен к роутеру проводами, все как полагается сделаны пробросы портов, короче сервер прекрасно виден во внешнем мире. И мое начальство и заказчики, когда надо заходят, если я хочу им что то показать... С мобилы соединяюсь с сервером либо по вифи, либо по 4Г, все прекрасно работает. В данный момент захожу с вифи. Попытался просто в chrome на мобиле набрать в адресной строке http://<ip>/.../kld-js.js И получил сообщение (ОТ МЕГАФОНА (мой оператор 4Г) http://m.megafonpro.ru/http-errors/404 (пошла переадресация на этот ip) Цитата:
то спокойно получаю его на эране мобилы. Короче, какой то маразм. |
Попробовал с ноута все это проделать.
При наборе в адресной строке текст показывается, но при иморте выдается ошибка TypeError: Failed to fetch dynamically imported module: http://?????/kld-js.js |
voraa, http - мобильные операторы(и не только) подменяют js на обёртку со своей рекламой. У нас разок при показе демо заказчику порнобанер на огромном экране вылез.=)
Видать что-то с подменой у них пошло не так. Напиши в поддержку мегафона, пусть разбираются. А себе пока поставь https - lets encript это просто и бесплатно.) |
Часовой пояс GMT +3, время: 14:16. |