Estoy intentando ejecutar algunos JS antes de que se active el evento onLoad de la página.JavaScript interrumpido en la devolución de llamada "Iniciar carga" de UIWebView
Pero estoy teniendo problemas para llamar con éxito a stringByEvaluatingJavaScriptFromString
en el método delegado webViewDidStartLoad
.
Para reproducir el problema, puede usar el siguiente código. aplicación
Delegado:
-(void)webViewDidStartLoad:(UIWebView *)webView {
[webView stringByEvaluatingJavaScriptFromString:@"window.valueHasBeenSet=true"];
}
Ver este código 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>
Esta página funciona en la primera vista ("Todo está bien"), pero no en todas las recargas, independientemente del método de recarga. Como probablemente esperaría, esto tampoco funciona en el delegado shouldStartLoadWithRequest
.
También intenté ejecutar el javascript inmediatamente después de webViewDidStartLoad
con performSelector:withObject:afterDelay:0
, fue en vano.
¿Alguna idea?
¿Alguna solución para esto? – Tudorizer
Sí, mira mi comentario a continuación. –