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">
示例目录
我正在尝试使用 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">
示例目录