Оценка WKWebviewJavascript не работает, выдает ошибку
Я пытаюсь вызвать существующую функцию с удаленного сайта в 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}
Это так просто! Я должен упустить что-то действительно глупое!
Ответы
Ответ 1
Нашел решение, это было просто, как я ожидал, я добавлял javascript до того, как представление полностью загрузило контент (перед Домом Ready). Поэтому мне просто пришлось перенести мой код на метод делегата:
Я надеюсь, что это поможет кому-то.
Ответ 2
Я обнаружил, что проблема была вызвана вызовом 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.