WKWebView使用LoadFileUrl加载本地内容

时间:2016-03-01 14:44:52

标签: c# xamarin wkwebview xamarin.mac

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

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"

感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

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

将Web文件夹移动到项目时,选择"创建文件夹引用"

enter image description here

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

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">

示例目录 enter image description here

答案 1 :(得分:3)

克里斯·哈蒙斯在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");

做了伎俩!