2013-09-24 1 views
1

Android 플랫폼에서 완벽하게 실행되는 PhoneGap 프로젝트가 있지만 WP8에서는 실행되지 않습니다.CROS (Cross Domain Resources Share)가 PhoneGap의 Windows Phone 8에서 작동하지 않는 것 같습니다.

프로젝트가 생성 될 때 생성되는 기본 페이지 인 index.html을로드 한 후 페이지를 _layout.html이라는 새 페이지로 리디렉션합니다.

여기 내 페이지로 리디렉션하기위한 코드가있는 index.js (내 PhoneGap 내장 코드)입니다. 여기

var app = { 
    // Application Constructor 
    initialize: function() { 
     this.bindEvents(); 
    }, 
    // Bind Event Listeners 
    // 
    // Bind any events that are required on startup. Common events are: 
    // `load`, `deviceready`, `offline`, and `online`. 
    bindEvents: function() { 
     document.addEventListener('deviceready', this.onDeviceReady, false); 
    }, 
    // deviceready Event Handler 
    // 
    // The scope of `this` is the event. In order to call the `receivedEvent` 
    // function, we must explicity call `app.receivedEvent(...);` 
    onDeviceReady: function() { 
     app.receivedEvent('deviceready'); 


     // THIS IS THE ONLY CODE I WROTE IN THIS BUILT-IN JAVASCRIPT CODE 
     window.setInterval(function() { 
      window.location.href = '_layout.html'; 
     }, 3000); 
     //---------------MY CODE ENDS-------------------------------------- 

    }, 
    // Update DOM on a Received Event 
    receivedEvent: function(id) { 
     var parentElement = document.getElementById(id); 
     var listeningElement = parentElement.querySelector('.listening'); 
     var receivedElement = parentElement.querySelector('.received'); 

     listeningElement.setAttribute('style', 'display:none;'); 
     receivedElement.setAttribute('style', 'display:block;'); 

     console.log('Received Event: ' + id); 
    } 
}; 

은이 페이지는 "franva"라는 사업부를 가지고 볼 수 있듯이 _layout.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="format-detection" content="telephone=no" /> 
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" /> 
    <link rel="stylesheet" type="text/css" href="css/index.css" /> 
    <title>MyApp</title> 

</head> 

<body onload="loadPage('_resultlist.html');"> 
    <div class="panel"> 
     <div class="row" id="Title" style="text-align: center; vertical-align: central; position: relative; left: -6%; top: 10%; margin-bottom: -30px; margin-top: -20px;"> 
      <img src="img/logo.png" style="width: 150px; height: 100px; text-align: center; vertical-align: central;" /> 
     </div> 
     <hr /> 
     <div id="franva" style="height: 300px; display:inline-block; width: 300px;"> 
     </div> 
     <hr /> 
     <div id="search" style="text-align: center;"> 
      <input type="button" class="searchbutton" title="Search" value="Search" /> 
     </div> 
    </div> 
    <script type="text/javascript" src="js/jquery-2.0.3.js"></script> 
    <script type="text/javascript" src="cordova.js"></script> 
    <script type="text/javascript"> 
     function loadPage(url, onleave, onenter) { 
      console.log("loadPage(" + url + ")"); 

      // If onleave function specified 
      if (onleave) { 
       onleave(); 
      } 

      var xmlhttp = new XMLHttpRequest(); 

      // Callback function when XMLHttpRequest is ready 
      xmlhttp.onreadystatechange = function() { 
       if (xmlhttp.readyState === 4) { 
        if (xmlhttp.status === 200) { 
         console.log("Received content" + xmlhttp.responseText); 
         $("#franva").html(xmlhttp.responseText); 
         // If onenter function specified 
         if (onenter) { 
          onenter(); 
         } 
        } 
        else { 
         $("#franva").html("Error loading page " + url); 
        } 
       } 
      }; 
      xmlhttp.open("GET", url, true); 
      xmlhttp.send(); 
     } 

     jQuery.isUnsafe = true; 

     function loadPageAjax(pageurl) 
     { 
      $.ajax({ 
       url: pageurl, 
       context: document.body, 
       dataType: "html" 
      }).done(function (data) { 
       alert("Ajax data = " + data); 
       $("#franva").html(data); 
      }); 
     } 

     </script> 
</body> 

</html> 

의 코드이며,이 사업부로, 다른 페이지, _resultlist.html로드 . 여기

내가 만이이 페이지를 생성

<div id="result-list" style="width: 100%;"> 
    <div class="result-row"> 
     <div class="left"> 
      <img src="img/tv1.jpg" /> 
     </div> 
     <div class="right"> 
      <p><strong>Samsung XT7290</strong></p> 
      <p>27 inch, AU$ 1777</p> 
     </div> 
    </div> 

    <div class="result-row"> 
     <div class="left"> 
      <img src="img/tv2.jpg" /> 
     </div> 
     <div class="right"> 
      <p><strong>Samsung XT7290</strong></p> 
      <p>27 inch, AU$ 1777</p> 
     </div> 
    </div> 

    <div class="result-row"> 
     <div class="left"> 
      <img src="img/tv3.jpg" /> 
     </div> 
     <div class="right"> 
      <p><strong>Samsung XT7290</strong></p> 
      <p>27 inch, AU$ 1777</p> 
     </div> 
    </div> 
</div> 

_resultlist.html, 그들보다 더 아무것도 코드입니다. (오도 포함 JQuery와 그 계산합니다.)

내가 클라우드 빌드를 실행 PhoneGap on Android 앱을 생성하는 웹 사이트를 구축하고 내 Android 휴대 전화에서 작동합니다. 온라인으로 생성 된 Windows Phone 앱을 설치할 수 없습니다 (오류 메시지가 나타납니다 :이 회사 앱을 설치할 수 없음 ...)

그래서 Visual Studio 2012에 빌드했습니다.하지만 div franva의 콘텐츠를로드 할 수 없습니다. .

코드를 실행하는 WebBrowser가 있기 때문에 CORS는 PhoneGap에서 문제가되지 않는다고 PhoneGap 문서를 살펴 보았습니다. 사실 Android 1 대, Windows Phone 8이 아닌 이유는 무엇입니까?

전체 아이디어은 중복 된 레이아웃 부분 코드를 반복해서 쓸 필요가 없도록 레이아웃 페이지가 있어야합니다. _resultlist.html 페이지는 div의 내용으로 사용되며 Ajax 호출로 가져온 데이터와 같은 다른 리소스로 대체 될 수 있습니다.

또한 WP 8에서 사용 된 IE의 버전에 대한 연구를 수행했습니다. 대답은 IE 10입니다. IE10에 대해 누군가가 CORS를 지원한다고 말하면서 다른 사람들은 아무 말도하지 않습니다 .... 나는 혼란 스럽습니다. ...

나는이 문제에 며칠 동안 고생했습니다.

누군가가 나를 위해 올바른 방법을 지적 할 수 있다면 정말 감사드립니다.

미리 감사드립니다.

+0

ooooooops ... 우리 전문가는 어디에 있습니까 ??? – Franva

+0

2 일째, 안녕하세요 ~~~? – Franva

+0

답변을 얻었습니까? – Apqu

답변

0

제 질문에 대한 해결책을 얻었습니다.

그냥 당신의 Web.config

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
      <add name="Access-Control-Allow-Origin" value="*"/> 
      <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 

에 아래의 코드를 추가하지만 당신은 당신이 정보를 검색 할 웹 사이트에 액세스 할 경우에만 적용됩니다. 없으면 자신의 C# 코드를 작성하여 모바일 앱의 WebAPI로 사용하여 노출 시키십시오.

같은 문제가있는 사람들에게 도움이되기를 바랍니다.

관련 문제