WKWebView 使用 LoadFileUrl 加载本地内容

WKWebView load local content with LoadFileUrl

我正在尝试使用 LoadFileUrl 方法在 WKWebView 中加载本地 html 文件,但我得到的只是一个空白视图。这是一个 Xamarin.Mac 应用程序(还没有沙盒)。

WKWebViewConfiguration conf = new WKWebViewConfiguration();
WKWebView www = new WKWebView (View.Frame, conf);
View = www;

string index = Path.Combine (NSBundle.MainBundle.BundlePath, "WebApp/Index.html");
string webAppFolder = Path.Combine (NSBundle.MainBundle.BundlePath, "WebApp");

www.LoadFileUrl (new NSUrl ("file://"+index), new NSUrl ("file://"+webAppFolder));

使用 "LoadRequest" 从远程服务器加载网页效果很好。

"Index.html" 文件的构建操作是 "BundleResource"

感谢您的帮助!

Chris Hamons 在 Xamarin forums 上为我指出了正确的方向。 刚刚改变

string index = Path.Combine (NSBundle.MainBundle.BundlePath, "WebApp/Index.html");
string webAppFolder = Path.Combine (NSBundle.MainBundle.BundlePath, "WebApp");

string index = Path.Combine (NSBundle.MainBundle.ResourcePath, "WebApp/Index.html");
string webAppFolder = Path.Combine (NSBundle.MainBundle.ResourcePath, "WebApp");

成功了!

对于那些不使用 Xamarin 并与 loadFileURL 战斗的人:几个小时(像我一样)。

当您将 web 文件夹移动到项目时,select "Create folder references"

然后使用类似这样的代码:

if let filePath = NSBundle.mainBundle().resourcePath?.stringByAppendingString("/WebApp/index.html"){
  let url = NSURL(fileURLWithPath: filePath)
  if let webAppPath = NSBundle.mainBundle().resourcePath?.stringByAppendingString("/WebApp") {
    let webAppUrl = NSURL(fileURLWithPath: webAppPath, isDirectory: true)
    webView.loadFileURL(url, allowingReadAccessToURL: webAppUrl)
  }
}

在 html 文件中使用这样的文件路径

<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">

不是这样的

<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">

示例目录