2014-04-10 2 views
1

내 응용 프로그램에서 Cordova의 InAppBrowser를 사용하여 외부 페이지를 엽니 다. localStorage 항목을 찾기 위해 폴링 이벤트를 첨부합니다. 항목이 '보인'경우 InAppBrowser가 닫히지 만 그 일은 일어나지 않습니다.Intel App Framework 및 Cordova의 InAppBrowser에서 폴링이 작동하지 않는 이유는 무엇입니까?

이것은 모두 Intel XDK에 있습니다.

Game1.html (외부 페이지)가로드되고 나타나는 이유는 무엇입니까 (아래 코드 참조). '제출'기능을 실행하는 버튼을 클릭하면 '완료'라는 메시지가 나타납니다. Game.html 페이지에서 경고하지만 이벤트 리스너의 "Caught"알림이 표시되지 않습니다.

업데이트 : 원격 페이지가로드되어 왼쪽 상단 모서리에 '뒤로'아이콘이있는 것으로 나타났습니다. 나는 Cordova InAppBrowser에서 이것을 기대하지 않았습니다. 그러나 device.showRemoteSiteExt (intel bridge api) 설명서에서이 아이콘에 대해 설명합니다. window.show가 device.showRemoteSiteExt로 재정의 될 수 있습니까?

이 메서드를 사용하려는 주된 이유는 Game1.html이 localCache에 저장된 데이터를 생성하도록 허용하기 위해서입니다. 그런 다음 폴링 프로세스가 해당 데이터를 선택하여 서버로 릴레이 할 수 있습니다. index.html을에서

기능이 될 이유

function submit() { 
    localStorage.setItem("name", "john"); 
    alert("Done!"); 
} 

누구나 알고 : 여기

function showGamesPage() { 
    var win = window.open("http://localhost:53841/Game1.html", "_blank", "EnableViewPortScale=yes"); 
     win.addEventListener("loadstop", function() { 
      win.executeScript({ code: "localStorage.setItem('name', '');" }); 
      var loop = setInterval(function() { 
       win.executeScript({ code: "localStorage.getItem('name');"}, 
        function(values) { 
         var name = values[0]; 
         if (name) { 
          clearInterval(loop); 
          alert("Caught!"); 
          win.close(); 
         } 
        } 
       ); 
      }); 
     }); 
    } 

그리고는 Game1.html에서 화재가 나는 버튼을 클릭 기능을입니까? 이것은 XDK의 구멍일까요?

미리 감사드립니다.

+0

사용중인 인텔 XDK의 버전 :

하지만 아이폰 같은 코드가 여기에 작동 코드인가? 최신 버전에는 inappbrowser 및 loadstop과 관련된 몇 가지 수정 사항이 있습니다. – OldGeeksGuide

+0

프레임 워크 버전 2.1을 지원하는 XDK 버전 0714를 사용하고 있습니다. 프레임 워크 버전을 지정하지 않으므로 2.1을 사용한다고 가정합니다. 2.1이 최신 버전 인 것으로 보입니다. –

+0

로컬 URL을 통해 game1.html을로드 중입니다. 그것이 당신 프로젝트의 일부입니까? 또는 xdk 프로젝트 외부의 파일과 별도입니까? – OldGeeksGuide

답변

1

귀하의 코드는 Intel XDK App Preview를 사용하여 iPhone에서 완벽하게 작동했지만 을 index.html에 추가 했습니까?

XDK 에뮬레이터에서는 작동하지 않지만 localhost.setItem()은 시뮬레이션 된 inappbrowser에서 실행되지 않습니다.

<!DOCTYPE html> 
<html> 
<head> 
    <title>App</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
    <script src="cordova.js"></script> 
    <script> 
    function showGamesPage() { 
     var win = window.open("https://c9.io/.../test.html", "_blank", "EnableViewPortScale=yes"); 
     win.addEventListener("loadstop", function() { 
      win.executeScript({ code: "localStorage.setItem('name', '');" }); 
      var loop = setInterval(function() { 
       win.executeScript({ code: "localStorage.getItem('name');"}, 
        function(values) { 
         var name = values[0]; 
         if (name) { 
          clearInterval(loop); 
          alert("Caught!"); 
          win.close(); 
         } 
        } 
       ); 
      }); 
     }); 
    } 
    </script> 
    <style> 
body{background-color: white}  
    </style>  
</head> 
<body> 
<h1 onclick="showGamesPage()">Open</h1> 
</body> 
</html> 
+0

감사합니다. krisrak. 필자는 App Preview와 함께 Android에서 동일한 코드를 테스트했으며 에뮬레이터와 동일한 동작을했습니다. iPhone에서 테스트 해 주셔서 감사합니다. 나는 하나에 접근 할 수 없다. 내 다음 단계는 Apple/Android 델타를 이해하기 위해 인텔 프레임 워크 개발자에게 맡기는 것이라고 생각합니다. –

+0

안드로이드 버전 테스트를하셨습니까? IntelXDK 팀에서 일하고 있습니다 – krisrak

+0

휴대 전화가 버전 4.3을 실행합니다.내 집 주변에 몇 가지 다른 Android 기기가 있습니다. 다른 버전과 설정을 묻는대로 시도해 보겠습니다. –