例如,Google试图将JQuery注入到我无法控制的页面的UIWebView
中。当UITextField
获得焦点,我执行下面的代码行:如何将JQuery注入到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');}"];
我执行的背景变化来验证我能够运行一个jQuery脚本。我可以验证是否正在调用Objective-C方法,并且我甚至种植了一个alert
用于加载新创建的<script>
标记,因此我知道它正在UIWebView
中执行。我如何正确注入它才能执行它?
编辑:
我有事件试过这种调用该函数来改变颜色后:
[myWebView stringByEvaluatingJavaScriptFromString:@"alert($('body').css());"];
没有警报节目。
我发现我的代码确实工作,只是不可靠。阅读完文章后,可能是因为DOM尚未准备好。在浏览完文章之后,执行延迟选择器可能是等待在DOM准备好之前使用jQuery执行更改的诀窍。当我有机会时,我会试试看。 – 2010-08-26 00:32:08
你的博客帖子从网上消失:( – 2011-03-10 05:54:16
@Hamutsi。修正了!我改了博客引擎,打破了我所有的链接。 – 2011-03-10 18:19:45