在 iOS 的 WKWebView 上通过 HTML 文件加载 Javascript 文件

Load Javascript files through HTML file on WKWebView in iOS

我需要通过 HTML 文件加载 Javascript 文件。我按以下屏幕截图中显示的顺序构建了文件。

HTML head 标签包含要调用的 Javascript 个文件,如下所示:

<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<script type="text/javascript" src="AjaxCapturer.js"></script>
<script type="text/javascript" src="authenticate.js"></script>
</head>

所以我一直在使用 UIWebView 加载页面并正确加载,如下面的屏幕截图所示。

现在,如果我 运行 使用 WKWebView 同样的东西,那么页面将继续加载,如下面的屏幕截图所示。

Javascript 文件正在触发(添加警报)但页面未在 WKWebView 中加载。下面是我的代码逻辑:

-(void)loadWebVW{

    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
    WKPreferences *pref = [[WKPreferences alloc] init];
    pref.javaScriptEnabled = YES;
    pref.javaScriptCanOpenWindowsAutomatically = YES;
    config.preferences = pref;

    CGRect vwFrame = CGRectMake(10, 80, 300, 480);
    WKWebView *webVW = [[WKWebView alloc] initWithFrame:vwFrame configuration:config];
    [self.view addSubview:webVW];
    webVW.navigationDelegate = self;
    webVW.UIDelegate = self;

    NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"offline_Forms"
                                                         ofType:@"html"];
    NSString *html = [NSString stringWithContentsOfFile:htmlPath
                                               encoding:NSUTF8StringEncoding
                                                  error:nil];
    NSURL *baseUrl = [NSURL fileURLWithPath:
                      [NSString stringWithFormat:@"%@/JavaScript",
                       [[NSBundle mainBundle] bundlePath]]];
    [webVW loadHTMLString:html baseURL:baseUrl];

    //or//

    // [webVW loadRequest:[NSMutableURLRequest requestWithURL:[NSURL URLWithString:htmlPath]]];

}

我们是否需要添加任何额外的东西才能在 WKWebView 中加载它。请帮忙解决这个问题。提前致谢。

我发现这是 iOS 10.3 中的一个已知问题,稍后在 iOS 10.3.2 中修复,请参阅 link from Apple developer forum 获取更多信息。有时我觉得 Simulator 中存在同样的问题,但在物理设备中工作正常。因此,请确保每次验证 WKWebView 物理设备的功能。