为啥ios 用wkwebview html字符串加载html,html里的canvas元素点击不了?

WKWebView加载本地html代码,css加载失败 - 跟谁学
搜索你想学的科目、老师试试,例如“钢琴”搜索无锡
&&WKWebView加载本地html代码,css加载失败上图是使用UIWebView加载的本地HTML 上图是使用WKWebView加载的相同的HTML 有大神知道这是啥情况么?周剑峰未解
试试这个? 另外,你截图的代码都看不清,你可以直接贴出来格式化后的代码, 不用贴一张截图的,类似下面这样:let a = 1
相关问题大家都在看最新提问
关注我们官方微信关于跟谁学服务支持帮助中心WKWebView 点击链接无反应_IOS开发-织梦者
当前位置:&>&&>& > WKWebView 点击链接无反应
WKWebView 点击链接无反应
wkWebView 点击链接无反应
多半是因为网页中有target=&_blank& 在新窗口打开链接
而你有没有实现createWebViewWithConfiguration
-(WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration
*)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
NSLog(@&createWebViewWithConfiguration&);
if (!navigationAction.targetFrame.isMainFrame) {
[webView loadRequest:navigationAction.request];
以上就是WKWebView 点击链接无反应的全文介绍,希望对您学习和使用ios应用开发有所帮助.
这些内容可能对你也有帮助
更多可查看IOS开发列表页。
猜您也会喜欢这些文章WKWebView使用遇到的坑 - 简书
WKWebView使用遇到的坑
1. ios9以前版本读取本地HTML的问题
当使用loadRequest来读取本地的HTML时,WKWebView是无法读取成功的,后台会出现如下的提示:Could not create a sandbox extension for /原因是WKWebView是不允许通过loadRequest的方法来加载本地根目录的HTML文件。而在iOS9的SDK中加入了以下方法来加载本地的HTML文件:[WKWebView loadFileURL:allowingReadAccessToURL:]但是在iOS9以下的版本是没提供这个便利的方法的。以下为解决方案的思路,就是在iOS9以下版本时,先将本地HTML文件的数据copy到tmp目录中,然后再使用loadRequest来加载。但是如果在HTML中加入了其他资源文件,例如js,css,image等必须一同copy到temp中。这个是最蛋疼的事情了。
解决方法如下
1.Objective-C:
//将文件copy到tmp目录
- (NSURL *)fileURLForBuggyWKWebView8:(NSURL *)fileURL {
NSError *error =
if (!fileURL.fileURL || ![fileURL checkResourceIsReachableAndReturnError:&error]) {
// Create "/temp/www" directory
NSFileManager *fileManager= [NSFileManager defaultManager];
NSURL *temDirURL = [[NSURL fileURLWithPath:NSTemporaryDirectory()] URLByAppendingPathComponent:@"www"];
[fileManager createDirectoryAtURL:temDirURL withIntermediateDirectories:YES attributes:nil error:&error];
NSURL *dstURL = [temDirURL URLByAppendingPathComponent:fileURL.lastPathComponent];
// Now copy given file to the temp directory
[fileManager removeItemAtURL:dstURL error:&error];
[fileManager copyItemAtURL:fileURL toURL:dstURL error:&error];
// Files in "/temp/www" load flawlesly :)
return dstURL;
//调用逻辑
NSString *path = [[NSBundle mainBundle] pathForResource:@"indexoff" ofType:@"html"];
if ([[UIDevice currentDevice].systemVersion floatValue] &= 9.0) {
// iOS9. One year later things are OK.
NSURL *fileURL = [NSURL fileURLWithPath:path];
[self.webView loadFileURL:fileURL allowingReadAccessToURL:fileURL];
// iOS8. Things can be workaround-ed
Brave people can do just this
fileURL = try! pathForBuggyWKWebView8(fileURL)
webView.loadRequest(NSURLRequest(URL: fileURL))
NSURL *fileURL = [self.fileHelper fileURLForBuggyWKWebView8:[NSURL fileURLWithPath:path]];
NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];
[self.webView loadRequest:request];
//将文件copy到tmp目录
func fileURLForBuggyWKWebView8(fileURL: NSURL) throws -& NSURL {
// Some safety checks
var error:NSError? =
if (!fileURL.fileURL || !fileURL.checkResourceIsReachableAndReturnError(&error)) {
throw error ?? NSError(
domain: "BuggyWKWebViewDomain",
code: 1001,
userInfo: [NSLocalizedDescriptionKey: NSLocalizedString("URL must be a file URL.", comment:"")])
// Create "/temp/www" directory
let fm = NSFileManager.defaultManager()
let tmpDirURL = NSURL.fileURLWithPath(NSTemporaryDirectory()).URLByAppendingPathComponent("www")
try! fm.createDirectoryAtURL(tmpDirURL, withIntermediateDirectories: true, attributes: nil)
// Now copy given file to the temp directory
let dstURL = tmpDirURL.URLByAppendingPathComponent(fileURL.lastPathComponent!)
let _ = try? fileMgr.removeItemAtURL(dstURL)
try! fm.copyItemAtURL(fileURL, toURL: dstURL)
// Files in "/temp/www" load flawlesly :)
return dstURL
//方法调用
var filePath = NSBundle.mainBundle().pathForResource("file", ofType: "pdf")
if #available(iOS 9.0, *) {
// iOS9. One year later things are OK.
webView.loadFileURL(fileURL, allowingReadAccessToURL: fileURL)
// iOS8. Things can be workaround-ed
Brave people can do just this
fileURL = try! pathForBuggyWKWebView8(fileURL)
webView.loadRequest(NSURLRequest(URL: fileURL))
fileURL = try fileURLForBuggyWKWebView8(fileURL)
webView.loadRequest(NSURLRequest(URL: fileURL))
} catch let error as NSError {
print("Error: " + error.debugDescription)
2. WKWebView - WKNavigationDelegate使用
特别提醒一点,在使用以下delegate的方法时
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
需执行decisionHandler的block。
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
NSURLRequest *request = navigationAction.
WMPageActionType actionType = ActionTypeN
WKNavigationActionPolicy actionPolicy = WKNavigationActionPolicyA
if([request.URL.absoluteString hasPrefix:OC_CLOSE_REQUEST]){
actionType = ActionTypeC
actionPolicy = WKNavigationActionPolicyC
if(self.actionDelegate && [self.actionDelegate respondsToSelector:@selector(webView:action:type:)]) {
[self.actionDelegate webView:webView action:navigationAction type:actionType];
//这句是必须加上的,不然会异常
decisionHandler(actionPolicy);
3.WKWebView-JS执行方法
WKWebView JS执行方法与UIWebView不一样了。
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(id, NSError *))completionH
completionHandler 拥有两个参数,一个是返回错误,一个可以返回执行脚本后的返回值WKWebView 简单使用以及页面显示不出来的bug - 简书
WKWebView 简单使用以及页面显示不出来的bug
WKWebView 是苹果在 iOS 8 中引入的新组件,目的是给出一个新的高性能的 Web View 解决方案,摆脱过去 UIWebView 的老旧笨重特别是内存占用量巨大的问题。WKWebView 有以下几大主要进步:1.将浏览器内核渲染进程提取出 App,由系统进行统一管理,这减少了相当一部分的性能损失。2.js 可以直接使用已经事先注入 js runtime 的 js 接口给 Native 层传值,不必再通过苦逼的 iframe 制造页面刷新再解析自定义协议的奇怪方式。3.支持高达 60 fps 的滚动刷新率,内置了手势探测。
WKWebView 的简单使用。
创建一个名为 新项目。在 ViewController 顶部引入 WebKit:1 @import WebKit
2 创建一个 WKWebView 类型的成员变量,并对其进行初始化,加入到页面上:
2.1 复制代码@interface ViewController ()@property (nonatomic, strong) WKWebView *webV@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds];self.webView.allowsBackForwardNavigationGestures = YES;self.webView.navigationDelegate =[self.view addSubview:self.webView];[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@""]]];}3. WkNavigationDelegate
3.1 拷贝代码#pragma mark - WKNavigationDelegate- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {NSLog(@"didStartProvisionalNavigation");}- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation {NSLog(@"didCommitNavigation");}- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {NSLog(@"didFinishNavigation");}3.2 所有准备就绪,如果你用的是 Xcode 7,这时候你应该得到了一块雪白雪白的屏幕,并不是网页。这是因为 iOS 9 SDK 中默认不再支持访问非 HTTPS 的地址,我们需要进行一些修改:4.在 Info.plist 上右键,以源代码方式打开。如下图:
4.1之后在第一个&key&之前加入以下代码:
再次运行项目,搞定!}

我要回帖

更多关于 wkwebview 本地html 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信