2016-11-02 9 views
0

私は、サーバーからHTMLコンテンツをダウンロードしてWindowsストレージフォルダ(Windows.Storage.ApplicationData.Current.LocalFolder.Path)に保存しています。 window.location.href = "ms-appdata:///local/inde.html"を使用してそのページに移動すると何も起こりません。 webView.navigate( "ms-appdata:///local/index.html")を使用してナビゲートすると、ページが表示されますが、JavaScriptは実行されません。何でも助けになるだろう。ユニバーサルWindowsアプリケーション(UWP)WebviewでローカルHTMLファイルをロードしていません

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 explicitly call 'app.receivedEvent(...);' 
 
    onDeviceReady: function() { 
 
     app.receivedEvent('deviceready'); 
 
    }, 
 
    // Update DOM on a Received Event 
 
    receivedEvent: function (id) { 
 
     var plugin = new RuntimeComponent.Class; 
 
     plugin.InitializeApp().then(function (response) { 
 
      try{ 
 
       (new Windows.UI.Popups.MessageDialog(response, "Title")).showAsync() 
 
      }catch(e){ 
 

 
      } 
 
     }); 
 
     
 
    } 
 
}; 
 
app.initialize();
<html> 
 
    <head> 
 
     <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"> 
 
     <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>Hello World</title> 
 
    </head> 
 
    <body> 
 
     <script type="text/javascript" src="cordova.js"></script> 
 
     <script type="text/javascript" src="js/index.js"></script> 
 
    </body> 
 
</html>

+0

のようなものを使用してナビゲートする必要があると述べた@のようなフォルダ。 'ms-appdata:/// local/folder/file.html'のようなものです。 – tao

+0

@タオ:はい、私はすでにフォルダ内に自分のhtmlを持っています。ちょうど参照のために私は直接ファイルとして言及した。 –

答えて

0

私は= window.location.href使用してそのページに移動するとき、 "MS-APPDATA:を///local/inde.html" 何も起こりません。

問題は、アプリでHTMLコンテンツをホストするUWPのカプセル化されたコントロールであるUWP Web viewを使用していることです。 Microsoft Edgeレンダリングエンジンを使用してWindows 10向けにコンパイルされたアプリケーションにHTMLコンテンツを表示していますが、ここではコンテンツをロードするためのAPIなどがあります。従来のブラウザのように、window.location.hrefを使用して、ブラウザの現在のURLの場所をリダイレクトすることはできません。

webView.navigate(「ms-appdata:///local/index.html」)を使用してナビゲートすると、ページが表示されますが、JavaScriptは実行されません。

WebView内でJavaScriptを呼び出す場合は、InvokeScriptAsync methodに電話する必要があります。このサンプルは、上記のリンク先の公式ドキュメントにあります。しかし、あなたのjsコードが自動的に実行されるべきであれば、実行されなかった可能性のある他の多くの可能性があります。あなたのhtmlを共有してください。

最後に、このブログを読むことをお勧めします:Ten Things You Need to Know About WebView

+0

"index.html"は、wintimeランタイムコンポーネントメソッドを呼び出して、いくつかの設定を取得します。私がプロジェクトの一部として私のパッケージの中にindex.htmlを追加すると、それはうまくいきます。しかし、 "ms-appdata:///local/index.html"の下に同じindex.thmlを配置すると、ランタイムコンポーネントメソッドが呼び出されません。 また、元の質問に私のhtmlとjavascriptコードを追加しました。 –

+0

@ManojKumar、あなたのケースについてたくさん議論しました。それが標準のUWPアプリケーションの場合、ここのコードバへの参照はうまくいかず、あなたのjsコード内のWinRT APIも 'WebView'コントロールで動作しません。標準のUWPの場合、@ ZORROのように、 "このスキームのWebViewサポートでは、コンテンツをローカルフォルダまたは一時フォルダの下のサブフォルダに配置する必要があります。"しかし私がここで言及した問題について混乱させています。あなたのサンプルを共有することは可能でしょうか?私たちはあなたがそれをどのように働かせるか知るのにとても興味があります。 –

+0

@Greg以下はサンプルコードのリンクです。私は達成しようとしていることをあなたに説明すると思います。基本的には、 "ms-appdata:///local/folder/index.html"でRunTimeComponentメソッドにアクセスします。 https://www.dropbox.com/s/4yiac5sqmokmmw5/CordovaSample.zip?dl=0 –

0

window.location.hrefは、JavaScriptで使用されるプロパティです。しかし、ms-appdataは、UWPアプリケーションで使用されるURIスキームです。したがってwindow.location.hrefms-appdata:///local/inde.htmlとは動作しません。 WebViewの中にローカルのHTMLファイルをロードするには、我々はあなたが何をやったかのようなms-appdata schemeを使用していますUriNavigateメソッドを使用する必要があります。しかし、ここで我々はそれを注意する必要があります。

Remarks in WebView class

、アプリのLocalFolderまたはから非圧縮と暗号化されていないコンテンツをロードするにはTemporaryFolderデータストア、使用していますUriNavigate方法uuse ms-appdata schemeWebViewこのスキームのサポートにはが必要ですローカルまたは一時フォルダのサブフォルダにコンテンツを配置します。これにより、ms-appdata:/// local/フォルダ/ file.htmlおよびms-appdata:/// temp/フォルダ/ file.htmlなどのURIへのナビゲーションが可能になります。

だから、TAOさんのコメントでは、ローカルフォルダの下にサブフォルダにあなたのhtmlとjsのファイルを配置して、あなたが地元の下にサブフォルダにあなたのhtmlを置くべき

webView.navigate("ms-appdata:///local/folder/index.html"); 
関連する問題