Страница Jquery для мобильных устройств не загружается правильно на 3G-соединениях в Нидерландах - PullRequest
4 голосов
/ 28 октября 2011

У меня есть мобильное приложение jquery, которое работает внутри UIWebView в приложении для iphone.В веб-просмотре правильно отображается страница jquery-mobile, НО только в том случае, если страница не загружена 3G-соединением.Я знаю, это звучит очень странно, и это действительно очень странная проблема, потому что, если страница загружена с помощью соединения WIFI, она отображается идеально ... вот скриншот ...

enter image description here

Если вместо этого мой клиент использует 3G-соединение для загрузки мобильной страницы jquery, кажется, что по какой-то причине javascripts и CSS, необходимые для отображения мобильной страницы jquery, не загружаются.Вот второй скриншот, показывающий, как выглядит страница, когда она загружена 3G ...

enter image description here

(Примечание: я знаю, что этот скриншот не совсем та же страница, что ипервый, но когда он загружается правильно, он имеет тот же стиль, что и первый скриншот)

Как видно из заголовка страницы, 3G-соединение, которое вызывает эту проблему, находится в Нидерландах и мойклиент попробовал двух разных провайдеров 3G в Нидерландах и столкнулся с одинаковой проблемой у обоих провайдеров.Если я тестирую приложение там, где я живу, а именно в Южной Африке, страница корректно загружается с моим 3G-соединением.

Итак, мой вопрос: кто-нибудь знает, что может быть причиной javascripts для мобильных устройств и CSS jqueryне удается загрузить 3G-соединения в Нидерландах?

Ответы [ 3 ]

10 голосов
/ 05 ноября 2011

Я определил, что пошло не так на 3G-соединении в Голландии.Эта проблема возникает из-за того, что несколько мобильных операторов вносят изменения в контент перед его доставкой на телефон, и эта модификация нарушает работу jQuery.Из моего опыта и из того, что я прочитал в Интернете, кажется, что следующие провайдеры делают модификацию контента: O2 в Великобритании, Vodafone в Нидерландах и T-Mobile в Нидерландах.

Чтобы увидеть отчеты другихлюди, которые сталкивались с проблемами с этими соединениями 3G, ломающими javascripts, просматривают следующие ссылки:

http://stuartroebuck.blogspot.com/2010/07/mobile-proxy-cache-content-modification.html

http://blog.gotfocussolutions.com/index.php/2011/10/jquery-mobile-doesnt-work-on-o2-3gedge-due-to-mobile-proxy-cache-content-modification/

http://bugs.jquery.com/ticket/8917

http://www.ladysign -apps.com / blog / code / javascript / jquery-not-load-3g-iphone-safari /

Последняя ссылка, указанная выше, также дает работувокруг этой проблемы;файл javascript, который изменяется и нарушается соединением 3G, должен быть перемещен на внешний сервер .Так, например, если соединение jQuery прерывается соединением 3G (как это было для меня), то не обслуживайте файл jquery самостоятельно, вместо этого используйте CDN, такой как google: http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js

Надеюсь, что эта информация спасет кого-то еще от многих часов разочарования, что этот вопрос стоил мне!

0 голосов
/ 11 февраля 2015

Я решаю эту проблему, меняя URL в ajax с ../folder/subfolder/test.php на http://mydomain/folder/subfolder/test.php

0 голосов
/ 11 октября 2012

Для тех, кто сталкивается с этой проблемой в O2 (в любом случае, конечно, здесь, в Великобритании), причина в том, что у O2 есть «платформа оптимизации», которая берет внешние файлы CSS и Javascript и устанавливает их в документ в строке, что может вызвать конфликты.( source )

Этот URL, безусловно, был одной из лучших ссылок, на которые я наткнулся в отношении этой конкретной проблемы:

http://stuartroebuck.blogspot.co.uk/2010/08/official-way-to-bypassing-data.html

Один изболее надежный обходной путь - изменить заголовки вашего веб-сайта таким образом, чтобы он возвращал заголовок Cache-Control: no-transform, поскольку O2 указал, что, если этот ответ будет предоставлен, они не будут изменять заголовки.

Вы можете добавить следующее к своему.htaccess файл:

<files ~ "\.(html|php|js)$">
    Header add Cache-Control "no-transform"
</files>
...