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。