CORS + Android Webview,不在设备上工作(但在模拟器上有效)

时间:2012-07-11 20:11:15

标签: android jquery-mobile cordova android-emulator cors

我有一个工作的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移动演示加载。但是,在实际的2.3 Android设备(T-mobile G2运行Cyanogen,Galaxy SII,Galaxy Player)上,changePage()调用什么都不做。

2 个答案:

答案 0 :(得分:4)

$.mobile.changePage()函数中调用pageinit函数听起来不错,因为这会导致无限循环。 $.mobile.changePage()函数会初始化指定为target参数的页面,因此每次拨打$.mobile.changePage()时,您都会触发pageinit个事件。

您可能希望在初始化jQuery Mobile之前绑定到mobileinit事件以覆盖$.support.cors变量:

<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>

相关文档:

答案 1 :(得分:1)

尝试使用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