CORS + Android Webview, не работает на устройстве (но работает на эмуляторе)

У меня есть работающая телефонная программа HelloWorld с jquery mobile, которая посыпается, как описано здесь: http://jquerymobile.com/demos/1.1.0/docs/about/getting-started.html . Я добавил немного javascript, чтобы экспериментировать с Cross Origin Resource Sharing:

<script> $(document).bind("pageinit", function() { $.support.cors = true; $.mobile.allowCrossDomainPages = true; $.mobile.changePage("http://jquery.com"); }); </script> 

Это отлично работает на эмуляторе (2.3), jquery.com загружается поверх демонстрации jquery mobile. Однако на реальных 2.3 Android-устройствах (T-mobile G2 работает Cyanogen, Galaxy SII, Galaxy Player) вызов changePage () ничего не делает.

Попробуйте использовать mobileinit вместо pageinit . Поскольку событие, к которому вы привязаны, является обычным jQuery, а для jQuery mobile событие инициализации – mobileinit.

The $.mobile.allowCrossDomainPages option must be set before any cross-domain request is made so we recommend wrapping this in a mobileinit handler .

Вызов функции $.mobile.changePage() функции pageinit звучит как плохая идея, потому что это должно вызвать бесконечный цикл. Функция $.mobile.changePage() инициализирует страницу, указанную в качестве target параметра, поэтому каждый раз, когда вы вызываете $.mobile.changePage() вы также pageinit событие pageinit .

Вероятно, вы хотите связать с событием mobileinit чтобы перезаписать переменную $.support.cors перед инициализацией jQuery Mobile:

 <script src="jquery.js"></script> <script> $(document).bind("mobileinit", function() { $.support.cors = true; $.mobile.allowCrossDomainPages = true; $.mobile.changePage("http://jquery.com"); }); </script> <script src="jquery-mobile.js"></script> 

Связанная документация: