Estoy tratando de inyectar JQuery en un UIWebView
de una página que no puedo controlar, digamos Google, por ejemplo. Cuando un UITextField
obtiene foco, Estoy ejecutando las siguientes líneas de código:¿Cómo inyectar JQuery en una página existente dentro de UIWebView?
NSString* scriptInject = @"var headElement = document.getElementsByTagName('head')[0]; var script = document.createElement('script');
script.setAttribute('src','http://jquery.com/src/jquery-latest.js');
script.setAttribute('type','text/javascript'); headElement.appendChild(script);";
[myWebView stringByEvaluatingJavaScriptFromString:scriptInject];
[myWebView stringByEvaluatingJavaScriptFromString:@"$(document).ready(function() {$('body').css('background', '#FF0000');}"];
Estoy ejecutando el cambio de fondo para validar que soy capaz de ejecutar un script de jQuery. Puedo verificar que se está llamando al método Objective-C, e incluso planté un alert
para la carga de la etiqueta <script>
recién creada, así que sé que se está ejecutando en el UIWebView
. ¿Cómo lo inyecté correctamente para poder ejecutarlo?
EDIT:
Tengo evento trató esto después de llamar a la función para cambiar el color:
[myWebView stringByEvaluatingJavaScriptFromString:@"alert($('body').css());"];
Si no se presenta de alerta.
Me parece que mi código realmente funciona, pero no de manera confiable. Después de leer su artículo, puede ser porque el DOM aún no está listo. Después de revisar su artículo, realizar un selector retrasado puede ser el truco para esperar a ejecutar el cambio usando jQuery hasta que el DOM esté listo. Lo probaré cuando tenga oportunidad. –
su blogpost desapareció de la web :( –
@Hamutsi. Solucionado! Cambié el motor del blog y rompí todos mis enlaces. –