Objective-C与JavaScript的交互

news/2024/7/20 20:06:35 标签: javascript, google, ios, mobile, url, function
     UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将 javascript嵌入页面中,通过这个方法我们可以在iOS中与UIWebView中的网页元素交互。

     UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS中与UIWebView中的网页元素交互。

stringByEvaluatingJavaScriptFromString

使用stringByEvaluatingJavaScriptFromString方法,需要等UIWebView中的页面加载完成之后去调用。我们在 界面上拖放一个UIWebView控件。在Load中将google mobile加载到这个控件中,代码如下:

- ( void )viewDidLoad
{
[super viewDidLoad];
webview.backgroundColor = [UIColor clearColor];
webview.scalesPageToFit = YES;
webview. delegate = self;
NSURL * url = [[NSURL alloc] initWithString: @” http://www.google.com.hk/m?gl=CN&hl=zh_CN&source=ihp ” ];NSURLRequest * request = [[NSURLRequest alloc] initWithURL:url];
[webview loadRequest:request];
}

我们在webViewDidFinishLoad方法中就可以通过javascript操作界面元素了。

1、获取当前页面的url

- ( void )webViewDidFinishLoad:(UIWebView * )webView {
NSString * currentURL = [webView stringByEvaluatingJavaScriptFromString: @" document.location.href " ];
}

2、获取页面title:

- ( void )webViewDidFinishLoad:(UIWebView * )webView {
NSString * currentURL = [webView stringByEvaluatingJavaScriptFromString: @" document.location.href " ];NSString * title = [webview stringByEvaluatingJavaScriptFromString: @" document.title " ];
}

3、修改界面元素的值。

NSString * js_result = [webView stringByEvaluatingJavaScriptFromString: @"document.getElementsByName('q')[0].value=’朱祁林’; ” ];

4、表单提交:

NSString * js_result2 = [webView stringByEvaluatingJavaScriptFromString: @" document.forms[0].submit(); ”];

这样就实现了在google搜索关键字:“朱祁林”的功能。

5、插入js代码

上面的功能我们可以封装到一个js函数中,将这个函数插入到页面上执行,代码如下:

[webView stringByEvaluatingJavaScriptFromString: @" var script = document.createElement('script'); "
" script.type = 'text/javascript'; "
" script.text = \"function myFunction() { "
" var field = document.getElementsByName('q')[0]; ”
“ field.value=’朱祁林’; ”
“ document.forms[0].submit(); ”
“ }\”; ”
“ document.getElementsByTagName(‘head’)[0].appendChild(script); ” ];[webView stringByEvaluatingJavaScriptFromString: @" myFunction(); " ];

看上面的代码:

a、首先通过js创建一个script的标签,type为’text/javascript’。

b、然后在这个标签中插入一段字符串,这段字符串就是一个函数:myFunction,这个函数实现google自动搜索关键字的功能。

c、然后使用stringByEvaluatingJavaScriptFromString执行myFunction函数。

演示:

第一步打开google mobile网站

第二步输入关键字

第三步搜素

总结:这篇文章主要是讲解了stringByEvaluatingJavaScriptFromString的用法,它的功能非常的强大,用起来非常简单,通过它我们可以很方便的操作uiwebview中的页面元素。

转自iOS分享网http://iosshare.cn



http://www.niftyadmin.cn/n/1036955.html

相关文章

Invalid options in vue.config.js: “ldevServer“ is not allowed

这个问题确实就是你的vue版本太高了 和vue2 不同 ldevServer对vue3已经没用了 确实vue3 关闭语法检查还更简单 找到package.json打开 找到 eslintConfig 下的 extends 将他下面的 eslint:recommended 删掉即可

viewDidUnload 和 dealloc 的区别

对于iphone开发人员来说,内存管理是极为重要的技巧,哪怕程序的功能再强大,设计再漂亮,如果内存控制不好,也难逃程序莫名退出的噩运,这与网页开发是完全不同的。 内存控制里面有很多门道,在这里…

object-c 多线程 加锁

object-c的多线程如java的多线程一样方便可靠。 一、线程创建与启动 线程创建主要有二种方式: [cpp] view plaincopy - (id)init; // designated initializer - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument; 当然,还有…

多线程之NSInvocationOperation

多线程编程是防止主线程堵塞,增加运行效率等等的最佳方法。而原始的多线程方法存在很多的毛病,包括线程锁死等。在Cocoa中,Apple提供了NSOperation这个类,提供了一个优秀的多线程编程方法。 本次介绍NSOperation的子集&#xff0…

iOS-获取当前时间的年、月、日、时、分、秒

01 //获取当前时间 02 NSDate *now [NSDate date]; 03 NSLog(”now date is: %”, now); 04 05 NSCalendar *calendar [NSCalendar currentCalendar]; 06 NSUInteger unitFlags NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalen…

NSLocalizedString 实现国际化

一、获取系统所支持的国际化信息 在国际化之前,你可以在iphone中的”设置->通用->多语言环境->语言”中来查看你的iphone支持哪些语言,当然也可以写一段代码测试一下你的iphone都支持哪些语言.测试代码如下: NSUserDefaults *defaults [NSUserDefaults standardUserD…

c++一招解决排序问题(sort的使用)简明版

我们在排序的时候会用到许多复杂的办法 例如冒泡&#xff0c;快排等等 但c给我们提供一种非常快捷的函数 sort&#xff08;&#xff09; 函数 它会根据不同的数量级选择合适的排序方法 速度非常的快 我们直接介绍它的使用 头文件&#xff1a; #include<algorithm>…

objective-c ——代码块

通过代码块&#xff08;block&#xff09;功能&#xff0c;你就能像对待对象一般&#xff0c;指定要在方法和函数中传递任意代码部分。 代码块的声明&#xff1a; int main (int argc, const char * argv[]) { autoreleasepool { void (^myBlock) (NSString *x);//声明变量…