WKWebview evaluateJavascript无效,抛出错误

时间:2015-01-08 21:04:07

标签: javascript ios objective-c wkwebview wkwebviewconfiguration

我正在尝试从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}

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

2 个答案:

答案 0 :(得分:28)

找到一个解决方案,它很简单,就像我期待的那样,我在视图完成加载内容之前添加了javascript(在Dom Ready之前)。所以我只需要将代码移到下面的委托方法中:

我希望这有助于某人。

答案 1 :(得分:3)

我发现问题是由在实际加载页面内容之前调用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
}

理想情况下,最佳解决方案是让听众为angularjs推送事件"页面就绪"但我不确定在wkwebview中这是可能的。