WKWebview评估JavaScript不工作,抛出一个错误

我正尝试从WKWebview的远程站点调用一个现有的函数:

function addtext (text) { jQuery("#webviewtest").html(text); } 

附:

 [self.WebView evaluateJavaScript:@"addtext(\"This is a text from app\");" completionHandler:^(id Result, NSError * error) { NSLog(@"Error -> %@", error); }]; 

但是这是抛出一个错误:

 Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo=0x170c788c0 {NSLocalizedDescription=A JavaScript exception occurred} 

这很简单! 我必须错过一些真正愚蠢的东西!

find了一个解决scheme,这很简单,正如我所期待的那样,我在添加JavaScript之前查看完整加载内容(Dom Ready之前)。 所以我只需将我的代码移动到下面的委托方法:

  • webView:didFinishNavigation :(来自WKNavigationDelegate )

我希望这可以帮助别人。

我发现问题是由webView:didFinishNavigation:引起的webView:didFinishNavigation:在页面内容实际加载之前被调用。 我认为该网站使用的是angularjs。

我介绍了一个手动延迟,似乎是我的诡计:

 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { print("loaded)") //abtn_run(UIButton()) self.perform(#selector(performAction), with: nil, afterDelay: 3.0) } 

并在这里打电话给我:

  func performAction() { //This function will perform this after delay of 3 seconds } 

理想情况下,最好的解决scheme将有一个监听器为angularjs“页面准备好”推送事件,但我不确定这是可能的wkwebview。