WKWebview evaluateJavascript nicht funktioniert, wirft einen Fehler
Bin ich versucht, rufen Sie eine existierende Funktion von einem remote-Standort in einem WKWebview:
function addtext (text) {
jQuery("#webviewtest").html(text);
}
Mit:
[self.WebView evaluateJavaScript:@"addtext(\"This is a text from app\");" completionHandler:^(id Result, NSError * error) {
NSLog(@"Error -> %@", error);
}];
Aber das wirft einen Fehler:
Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo=0x170c788c0 {NSLocalizedDescription=A JavaScript exception occurred}
Es ist so einfach! Ich muss etwas fehlt wirklich dumm!
Ist jQuery geladen auf dieser Seite?
Ja, es ist eine voll funktionsfähige website, ich bin nur eine Brücke bauen, um ein facebook-login funktioniert. Und die Funktion funktioniert auch, wenn ich normalerweise fordern die browser.
Versuchen Sie es ohne jQuery:
Hey @Pinal, Sie haben mir klar gemacht wurde, dass ein DOM-Ready-problem. Schauen Sie auf meine Antwort unten. Cheers.
Ja, es ist eine voll funktionsfähige website, ich bin nur eine Brücke bauen, um ein facebook-login funktioniert. Und die Funktion funktioniert auch, wenn ich normalerweise fordern die browser.
Versuchen Sie es ohne jQuery:
document.getElementById('webviewtest').innerHTML = text;
. Vielleicht html
- Methode fehlschlägt.Hey @Pinal, Sie haben mir klar gemacht wurde, dass ein DOM-Ready-problem. Schauen Sie auf meine Antwort unten. Cheers.
InformationsquelleAutor Rogers Sampaio | 2015-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben eine Lösung gefunden, es war einfach, wie ich erwartet hatte, ich war das hinzufügen der javascript-bevor das vollständige laden der Inhalte (vor dem Dom-Bereit). So hatte ich gerade meinen code auf den Delegaten-Methode unten:
Ich hoffe, das jemand hilft.
Nicht für mich arbeiten.
Implementieren Sie das delegieren?
InformationsquelleAutor Rogers Sampaio
Fand ich, dass das problem verursacht wurde durch die
webView:didFinishNavigation:
aufgerufen wird, bevor der Inhalt der Seite war tatsächlich geladen. Ich denke, die website mithilfe von angularjs.Stellte ich eine manuelle Verzögerung, schien d der trick für mich :
und habe meinen Aufruf hier:
Im Idealfall die beste Lösung wäre ein listener push-Veranstaltung für angularjs "Seite fertig stellen", aber ich bin nicht sicher, ob dies möglich ist, in wkwebview.
InformationsquelleAutor Mobile Bloke