私は、ハイブリッドWebViewを使用してxamarinフォームIOSアプリケーションがhtmlページ、スタイル、およびスクリプトを呼び出す際に取り組んでいます。私はスタイルとスクリプトをレンダリングすることはできませんよと私のコードはXamarinフォーム - IOS、スクリプト、およびスタイルが呼び出されていない
HybridWebViewRenderer.cs
protected override void OnElementChanged (ElementChangedEventArgs<HybridWebView> e)
{
base.OnElementChanged (e);
if (Control == null) {
userController = new WKUserContentController();
var script = new WKUserScript (new NSString (JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentEnd, false);
userController.AddUserScript (script);
userController.AddScriptMessageHandler (this, "invokeAction");
var config = new WKWebViewConfiguration { UserContentController = userController };
var webView = new WKWebView (Frame, config);
SetNativeControl (webView);
}
if (e.OldElement != null) {
userController.RemoveAllUserScripts();
userController.RemoveScriptMessageHandler ("invokeAction");
var hybridWebView = e.OldElement as HybridWebView;
hybridWebView.Cleanup();
}
if (e.NewElement != null) {
string fileName = Path.Combine (NSBundle.MainBundle.BundlePath, string.Format ("Content/{0}", Element.Uri));
//fileName = "/var/containers/Bundle/Application/2DC89563-D118-4092-B7A5-4549AF07F3B2/StoneApplication.iOS.app/Content/index.html"
Control.LoadRequest (new NSUrlRequest (new NSUrl (fileName, false)));
}
}
public void DidReceiveScriptMessage (WKUserContentController userContentController, WKScriptMessage message)
{
Element.InvokeAction (message.Body.ToString());
}
と私のindex.htmlで、ここで私は、スクリプト、画像、スタイル
<html>
<head>
<title>STONEAPP TEMPLATE</title>
<!--Scripts-->
<script src="/Scripts/angular.min.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/bootstrap.js"></script>
<script src="/Scripts/fileServer.js"></script>
<script src="/Scripts/fileupload.js"></script>
<script src="/Scripts/ng-cordova.js"></script>
<script src="/Scripts/app.js"></script>
<!--Styles-->
<link href="/Styles/bootstrap.css" rel="stylesheet"/>
<link href="/Styles/main.css" rel="stylesheet"/>
</head>
<body ng-app="stoneApp" style="background-color: #ffffff;">
<div ng-controller="templateCtrl">
<div id="Header" style="background-color:#293846;min-height:50px">
<table style="width:100%;padding-top:5px;padding-left:5px;padding-right:5px">
<tr>
<td align="center" width="5%" valign="middle" ng-if="jobView == true" ng-click="showActList()">
<img src="/Images/arrow-back.png" alt="" style="height:50px;width:50px"/>
</td>
<td align="center" width="5%" valign="middle">
<img src="/Images/wifi_on.png" alt="" style="height:50px;width:50px" ng-click="ShowWifiSettings()"/>
</td>
<td align="center" width="5%" valign="middle" ng-click="ShowTabSettings()">
<img src="/Images/settings.png" alt="" style="height:50px;width:50px" ng-if="loginView == false"/>
</td>
<td width="5%" valign="middle" ng-if="activityView == true"></td>
<td width="60%" valign="middle"></td>
<td width="20%" valign="middle" align="right">
<span style="color:white" ng-if="loginView == false">{{userName}} !</span>
</td>
<td width="5%" align="right" valign="middle" ng-click="logout()" >
<img src="/Images/power_button.png" style="height:50px;width:50px" ng-if="loginView == false"/>
</td>
</tr>
</table>
</div>
</div>
</body>
私を呼び出していますスタイルとスクリプトを呼び出すことができなくても、スタイルとスクリプトのバンドルリソースとしてビルドアクションを与えました。プログラム構造は添付されたイメージです。
私は、IOS 10.2タブレットを使用しています。ですから、私の問題を調べて、スクリプトのスタイルや画像をhtmlページのリンクとして呼び出せるようにしてください。前もって感謝します。あなたはControl.LoadRequest
であなたが問題だということはできません
こんにちは@Lezeにロードされ、あなたのindex.htmlの内容である私は、このように追加しますが、運スクリプト/ CSS /画像はありませんん
LoadHtmlString (String htmlContent, NSUrl baseUrl)
を使用することです読み込み文字列htmlPath = Path.Combine(NSBundle.MainBundle.BundlePath、string.Format( "Content/{0}"、Element.Uri)); 文字列htmlContents = File.ReadAllText(htmlPath); Control.LoadHtmlString(htmlContents、null); –
LoadHtmlStringにbaseUrlパラメータがありません。このようにしてみてください。string htmlPath = Path.Combine(NSBundle.MainBundle.BundlePath、string.Format( "Content/{0}"、Element.Uri)); NSUrlベースルール=新しいNSUrl(NSBundle.MainBundle.BundlePath、true);文字列htmlContents = File.ReadAllText(htmlPath); Control.LoadHtmlString(htmlContents、baseurl); ' – Leze