Phonegap и jquery mobile: href -> Origin null не разрешен Access-Control-Allow-Origin - PullRequest
14 голосов
/ 11 декабря 2011

Я пытаюсь использовать JQuery Mobile с PhoneGap, в многостраничном документе. Попытка использовать базовые ссылки href в документе, дает нулевое значение Origin, которое не допускается из-за Access-Control-Allow-Origin , что весьма раздражает.

Это потому, что на страницу индекса ссылаются через файл: //, а не http: //, который webkit интерпретирует как нулевой источник. Кто-нибудь получил jquery mobile и phonegap для работы в многостраничной среде? если да, то как ты можешь это сделать? Если вы добавите rel = external к тегам href, ссылки будут работать, но, конечно, все переходы будут потеряны.

Не могу найти информацию об этой конкретной проблеме о переполнении стека или интернете.

<!DOCTYPE HTML>
<html>

<head>
<title>PhoneGap</title>

<script type="text/javascript" charset="utf-8" src="phonegap-1.2.0.js"></script>   
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script>
    $(document).bind( "mobileinit", function(){
        //alert("mobileinit fired");  
        $.support.cors = true;
        $.mobile.allowCrossDomainPages = true;       
    });        
</script>   
<script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>

<script type="text/javascript">

function onDeviceReady() {
    navigator.network.isReachable("google.com", reachableCallback, {});
}
// Check network status
function reachableCallback(reachability) {
    // There is no consistency on the format of reachability
    var networkState = reachability.code || reachability;
    var states = {};
    states[NetworkStatus.NOT_REACHABLE]                      = 'No network connection';
    states[NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK] = 'Carrier data connection';
    states[NetworkStatus.REACHABLE_VIA_WIFI_NETWORK]         = 'WiFi connection';
    if (networkState != 0) online = true;
}
var online = navigator.onLine || false;

$(document).ready(function() { 
    $(document).bind('deviceready', function(){
        onDeviceReady()
})
// Your main code
})
//Now if you about to make an AJAX call to load up some dynamic data, you can easily check to see if you're online
if(online) {
    } else {
}


</script>

</head>

    <body>
        <h1>Welcome to PhoneGap</h1>
    <a href="edit.html">Edit html</a>
    </body>

</html>

Ответы [ 5 ]

7 голосов
/ 14 декабря 2011

Вот официальная документация о том, как сделать то, что вы ищете ...

Надеюсь, это поможет!

5 голосов
/ 12 апреля 2012

Комментарий Леона является правильным ответом - вам нужно добавить rel="external" к статическим ссылкам.

1 голос
/ 14 ноября 2012

Для проверки

  1. Скачать http-сервер mongoose
  2. скопировать файл mongoose_xxxxxxx.exe в ваши активы / www
  3. Теперь вы можете создавать свои html-страницы для jquery mobile без Access-Control-Allow-Origin
0 голосов
/ 18 апреля 2015

, если вы нацеливаете приложение выше JELLY_BEAN (API-уровень 16), вот что вы можете добавить к классу MainActivity.

<br> if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { super.appView.getSettings().setAllowUniversalAccessFromFileURLs(true); }

, что разрешит запросы XHR нулевого источника.

0 голосов
/ 05 мая 2013

Я думаю, что вы можете найти решение здесь: http://view.jquerymobile.com/master/demos/faq/how-configure-phonegap-cordova.php

$.mobile.allowCrossDomainPages = true; $.support.cors = true; $.mobile.phonegapNavigationEnabled = true

Хотя я не получил его на работу, я думаю, что вот решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...