2016-11-24 11 views
1

私はHybridWebView(https://developer.xamarin.com/guides/xamarin-forms/custom-renderer/hybridwebview/)を使用してHTMLドキュメントを表示するxamarin.formsアプリを持っています。私はローカルのCSSとjsをドキュメントに読み込むためにbaseUrlを使います。このコードはiOS 9.xでもうまくいきました。xamarin.formsデバイス(iOS 10.1)で動作しないwebview baseurl

しかし、iOS 10にアップグレードした後、コードはiOSシミュレータでは動作しますが、実際のデバイスでは動作しません。デバイス上では、ローカルストレージからCSSをロードしません。

ここに私が使用しているテストコードがあります。それはシミュレータでは動作しますが、デバイスでは動作しません。 HybridWebViewで

async void Handle_TestButtonClicked (object sender, System.EventArgs e) 
    { 
     string css = @" 
      body { 
       background-color: powderblue; 
      } 
      h1 { 
       color: blue; 
      } 
      p { 
       color: red; 
      } 
      "; 
     var folder = await AppGlobals.AppStorage.GetContentFolder(); 
     string filename = "styles.css"; 
     await AppGlobals.AppStorage.WriteToFile (folder, filename, css); 

     string html = @"<!DOCTYPE html> 
         <html> 
         <head> 
          <link rel=""stylesheet"" href=""styles.css""> 
         </head> 
         <body> 

         <h1>This is a heading</h1> 
         <p>This is a paragraph.</p> 

         </body> 
         </html>"; 

     this.DocumentView.Html = html; 
    } 

、私は、ローカルストレージへの読み取り/書き込みにPCLStorageライブラリを使用していますbaseUrlに

  if (Element.Html != null) { 
       string baseFolderPath = await AppStorage.GetInstance().GetContentFolderPath(); 
       var baseUrl = new NSUrl (baseFolderPath, true); 
       Control.LoadHtmlString (Element.Html, baseUrl); 
      } 

を設定するには、次のコードを使用しています。

答えて

0

私はローカルファイルにHTML文字列を書き込み、次にLoadFileUrlを使用して、それをロードすることによってこの問題を回避働いLoadHtmlStringがローカルCSS/JSなど

をロードするために壊れていると思います。もう一つの仕事は、周りのHTMLドキュメント自体に必要なCSS/JSを注入し、まだLoadHtmlStringを使用することができ、この作品

if (!String.IsNullOrEmpty (Element.Uri)) { 
        string filePath = await GetFilePathInContentFolderFromUri (Element.Uri); 
        var fileUrl = new NSUrl (filePath, false); 
        Control.LoadFileUrl (fileUrl, fileUrl); 
       } 

を期待、これは動作します。

関連する問題