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

Way*_*man 5 iphone objective-c

我试图将JQuery注入一个UIWebView我无法控制的页面,例如谷歌.当a 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');}"];
Run Code Online (Sandbox Code Playgroud)

我正在执行后台更改以验证我能够运行JQuery脚本.我可以验证是否正在调用Objective-C方法,我甚alert至为新创建的<script>标记的onload 种植了一个,所以我知道它正在被执行UIWebView.如何正确注入我可以执行它?

编辑:

在调用函数更改颜色后,我有事件尝试了这个:

[myWebView stringByEvaluatingJavaScriptFromString:@"alert($('body').css());"];
Run Code Online (Sandbox Code Playgroud)

没有警报显示.

Stu*_*ner 7

这对我有用:

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*/];
Run Code Online (Sandbox Code Playgroud)

摘自这篇文章.


Ben*_*hen 4

如果 jQuery 不在 DOM 中,您可以使用stringByEvaluatingJavaScriptFromString:它来注入它。我也遇到过类似的问题,我写了一篇关于它的博客文章:HTML parsing/screen scraping in iOS