Iphone 如何将JQuery注入UIWebView中的现有页面?

Iphone 如何将JQuery注入UIWebView中的现有页面?,iphone,objective-c,Iphone,Objective C,我正试图将JQuery注入一个我无法控制的页面的UIWebView,比如说谷歌。当UITextField获得焦点时,我正在执行以下代码行: NSString* scriptInject = @"var headElement = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.setAttribute('src','http://jquery.

我正试图将JQuery注入一个我无法控制的页面的
UIWebView
,比如说谷歌。当
UITextField
获得焦点时,我正在执行以下代码行:

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方法,我甚至为新创建的
标记的加载设置了
警报,因此我知道它正在
UIWebView
中执行。如何正确地注入它以执行它

编辑:

我已在调用函数更改颜色后尝试此操作:

[myWebView stringByEvaluatingJavaScriptFromString:@"alert($('body').css());"];

不显示警报。

如果jQuery不在DOM中,则可以使用
stringByEvaluatingJavaScriptFromString:
将其插入。我也遇到过类似的问题,我写了一篇关于这个问题的博客:。

这对我来说很有效:

NSString *jqueryCDN = @"http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js";
NSData *jquery = [NSData dataWithContentsOfURL:[NSURL URLWithString:jqueryCDN]];
NSString *jqueryString = [[NSMutableString alloc] initWithData:jquery encoding:NSUTF8StringEncoding];
[webView stringByEvaluatingJavaScriptFromString:jqueryString];

[webView stringByEvaluatingJavaScriptFromString:/*jquery commands here*/];

摘自。

我发现我的代码确实有效,只是不可靠。读完文章后,可能是因为DOM还没有准备好。在浏览了您的文章之后,执行延迟选择器可能是等待使用jQuery执行更改直到DOM就绪的诀窍。如果有机会,我会尝试一下。你的博客帖子从网上消失了:(@Hamutsi.Fixed!我更改了博客引擎并断开了所有链接。你的博客又消失了,我猜这就是为什么你总是希望你将代码复制到答案中。你的博客又消失了;请在这里发布答案:)现在没有人能看到解决方案我知道这是一个旧线程,但这段代码和源文章中的代码都未充分利用dataWithContentsOfURL:。jQuery库最终从googleapis.com下载,同时阻止主线程。同意!这个答案仅用于演示,当然这不是推荐的方法。我应该在什么时候实现“stringByEvaluatingJavaScriptFromString”?干完了?