Ich versuche, einige JS vor dem OnLoad Ereignis der Seite ausgelöst wird.JavaScript Fehler in UIWebView Callback "Start laden"
Aber ich habe Probleme beim erfolgreichen Aufruf stringByEvaluatingJavaScriptFromString
in der webViewDidStartLoad
Delegate-Methode.
Um das Problem zu reproduzieren, können Sie den folgenden Code verwenden.
Delegierter Umsetzung:
-(void)webViewDidStartLoad:(UIWebView *)webView {
[webView stringByEvaluatingJavaScriptFromString:@"window.valueHasBeenSet=true"];
}
ansehen HTML:
<html>
<head></head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.valueHasBeenSet)
{
// We enter this branch the first time
document.write('<h3>Everything is OK. Value has been set.</h3>');
}
else
{
// We incorrectly enter this branch on reloads
document.write('<h3>Error. Value has not been set.</h3>');
}
</script>
<a href="javascript:window.location.reload()">Reload</a>
</body>
</html>
Diese Seite auf den ersten Blick funktioniert ("Alles in Ordnung"), aber nicht auf alle neu geladen, unabhängig von der Reload-Methode. Wie Sie wahrscheinlich erwarten würden, funktioniert dies auch nicht in dem Delegaten shouldStartLoadWithRequest
.
Ich habe auch versucht, das Javascript sofort nach webViewDidStartLoad
mit performSelector:withObject:afterDelay:0
, vergeblich.
Irgendwelche Ideen?
Irgendeine Lösung dafür? – Tudorizer
Ja, siehe meinen Kommentar unten. –