WKWebView加载本地HTML失败 问题记录

2018-07-09  本文已影响192人  魈畈

方案1、loadRequest:加载本地HTML

    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:dirPath]]];

方案2、 loadFileURL: allowingReadAccessToURL:加载本地HTML

    NSURL *fileURL = [NSURL fileURLWithPath:dirPath];
    [self.webView loadFileURL:fileURL allowingReadAccessToURL:fileURL];

方案3、loadHTMLString:baseURL:加载本地HTML

    NSURL *baseURL = [NSURL fileURLWithPath:basePath];                    
    NSString * htmlCont = [NSString stringWithContentsOfFile:dirPath
                                                    encoding:NSUTF8StringEncoding
                                                       error:nil];
    [self.webView loadHTMLString:htmlCont baseURL:baseURL];

解决方案:

loadFileURL: allowingReadAccessToURL:

WKWebView 初始化时对 WKWebViewConfigurationpreferences 相关属性进行设置;

    //不通过用户交互,是否可以打开窗口
    configuration.preferences.javaScriptCanOpenWindowsAutomatically = true;
     //是否支持JavaScript
    configuration.preferences.javaScriptEnabled = true;
    [configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];

加载本地HTML

    NSURL *fileURL = [NSURL fileURLWithPath:dirPath];
    NSString *accessPath = [documentsPath stringByAppendingPathComponent:@"HTML所在文件夹名称"];
    NSURL *accessURL = [NSURL fileURLWithPath:accessPath];
    [self.webView loadFileURL:fileURL allowingReadAccessToURL:accessURL];
PS:

loadFileURL: allowingReadAccessToURL: 该方法iOS9.0以后才支持,需要注意;
FileURL为本地HTML路径;
AccessURL 为本地HTML及相关资源所在文件夹路径;
网上很多关于该问题的解决方案,FileURLAccessURL 使用同一值,既使用本地HTML路径,我在真机的过程中都是失败的;
测试真机版本:iPhone 5s(iOS 11.3) 模拟器版本:iOS 11.4

上一篇下一篇

猜你喜欢

热点阅读