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)
没有警报显示.
这对我有用:
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)
摘自这篇文章.
如果 jQuery 不在 DOM 中,您可以使用stringByEvaluatingJavaScriptFromString:它来注入它。我也遇到过类似的问题,我写了一篇关于它的博客文章:HTML parsing/screen scraping in iOS。
| 归档时间: |
|
| 查看次数: |
7161 次 |
| 最近记录: |