我尝试使用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"
感谢您的帮助!
答案 0 :(得分:5)
对于那些不使用Xamarin并与loadFileURL战斗的人:几个小时(像我一样)。
将Web文件夹移动到项目时,选择"创建文件夹引用"
然后使用类似这样的代码:
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">
答案 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");
做了伎俩!