iphone - 如何将 JQuery 注入(inject) UIWebView 中的现有页面?

标签 iphone objective-c

我正在尝试将 JQuery 注入(inject) UIWebView我无法控制的页面,例如 Google。当 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 方法,我什至植入了一个 alert用于加载新创建的 <script>标签,所以我知道它正在 UIWebView 中执行.如何正确地注入(inject)它以便我可以执行它?

编辑:

我在调用更改颜色的函数后试过这个:

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

没有警报显示。

最佳答案

这对我有用:

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*/];

取自this article .

关于iphone - 如何将 JQuery 注入(inject) UIWebView 中的现有页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527317/

相关文章:

javascript - 任何与 iPhone 上的视频播放器重叠的 HTML 内容都无法正常工作

objective-c - 我怎样才能在 Objective-C 中的两个类之间有引用?

iphone - 在应用程序更新时,自定义 plist 文件将得到更新,或者我们需要做些什么吗?

ios - 选择所有如果 blah.. 否则选择所有 blah

iphone - 振动 UI 项目的最佳方式?

iphone - 手机间隙 : get the filesize of captured audio file

ios - 无法访问 dispatch_async : "Variable is not Assignable (missing _block type specifier)" 中的全局变量

ios - 如何在 UIButton 中创建边框?

ios - 是否可以使用断点来发现下一个执行的代码

objective-c - iPhone 开发 : how to use custom fonts?