2016-11-23 21 views
0

Visual Studio 2015でCordovaのInAppBrowserプラグインを使用しています。このブラウザをアプリ内で実行することはできますか?現在、私のコードは、エッジの新しいインスタンスにURLを起動します:Cordova Windows PhoneユニバーサルInAppBrowser内アプリ可能?

私は次のようにwindow.openを交換しています:

function onDeviceReady() { 
    window.open = cordova.InAppBrowser.open; 
}; 

私は次のようにURLを起動しています:

ref = window.open(
    url, 
    '_system', 
    'location=no,hidden=yes'); 

_systemを使用すると、Edgeの新しいインスタンスが開かれているように見えます。私は旅をシームレスにするアプリ内で実行し、ブラウザを持つように願ってい

The app can’t use script to load the (URL here) url because the url launches another app. Only direct user interaction can launch another app 

:私は何か他のもの(例えば_self、_blank)私は次のエラーを取得するを使用している場合。

ありがとうございます。

答えて

0

これは私のソリューションです。

  1. jQueryのモバイルは、私が

  2. がloadstopを結合するために_blankをターゲットに空白の画面を取得するそうでない場合は必要になります。

    私が拾ってきた3ポイントがあります。 _selfを使用するとloadstopイベントが壊れました。

  3. 次のCSSクラスがInAppBrowserが、私は明確にするためのコードの一部を切り捨ててきたWindowsデバイス

    .inAppBrowserWrap { 
        border: 0 !important; 
    } 
    

に大規模な境界線を持っていないことを保証するために必要とされます。

HTML

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

     <script type="text/javascript" src="cordova.js"></script> 
     <script type="text/javascript" src="scripts/platformOverrides.js"></script> 
     <script type="text/javascript" src="scripts/jquery-mobile/scripts/jquery-1.8.0.min.js"></script> 
     <script type="text/javascript" src="scripts/jquery-mobile/scripts/jquery.mobile-1.4.5.min.js"></script> 
     <script type="text/javascript" src="scripts/index.js"></script> 

    </head> 
    <body> 
     <div id="MainContent"> 
      <label>Login here</label> 
      <input type="text" id="txtUserName" /> 
      <input type="text" id="txtPassword" /> 
      <button type="button" id="btnLogin">Login</button> 
      <div id="Message"> 
      </div> 
     </div> 
    </body> 
</html> 

JS

(function(){ 
    "use strict"; 

    var ref = null; 
    var apiUrl = 'http://192.168.1.3:3000/Api/MobileLogin'; 

    document.addEventListener('deviceready', onDeviceReady.bind(this), false); 

    function onDeviceReady() { 
     window.open = cordova.InAppBrowser.open; 

     document.getElementById('btnLogin').addEventListener('click', login); 
    }; 

    function login() { 
     // disable login button 
     var loginButton = this; 
     loginButton.disabled = true; 

     $.ajax({ 
      url: apiUrl, 
      type: 'post', 
      data: { Email: $('#txtUserName').val(), Password: $('#txtPassword').val() }, 
       success: function (url) { 
        LaunchBrowser(url); 

       // re-enable the button 
       loginButton.disabled = false; 
      } 
     }); 
    }; 

    function LaunchBrowser(url) { 

     // _blank must be used in order for loadstop to trigger 
     ref = window.open(
      url, 
      '_blank', 
      'location=no,hidden=no'); 

     ref.addEventListener('loadstop', function (e) { 
      if (e.url.match('MobileClose')) { 
       ref.close(); 
      } 
     }); 

    }; 

})(); 

のWeb APIは、トークン(1分後に期限が切れる)でヒットするモバイル用のURLを返します。これにより、ユーザーがログインし、セッション変数 "OnMobile"が設定されます。

ユーザーがWeb経由でログアウトすると、「OnMobile」がtrueであるため、ユーザーは「MobileClose」にリダイレクトされます。これは、InAppBrowserを閉じるようにアプリケーションに指示します。

関連する問題