iOS:在OC中调用JS脚本
示例一:在webView中调用js脚本进行搜索
1.首先导入JavaScriptCore.framework这个框架

2.创建webView、设置代理、请求手机端百度
#import "ViewController.h"
#import <JavaScriptCore/JavaScriptCore.h> #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height @interface ViewController ()<UIWebViewDelegate>
@property (strong,nonatomic)UIWebView *webView;
@property (assign,nonatomic)BOOL isFirstLoadWeb;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; self.webView = [[UIWebView alloc]initWithFrame:self.view.bounds];
self.webView.scalesPageToFit = YES;
self.webView.backgroundColor = [UIColor clearColor];
self.webView.delegate = self;
[self.view addSubview:self.webView];
NSURL *URL = [NSURL URLWithString:@"http://m.baidu.com"];
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:URL];
[self.webView loadRequest:request];
}
3.通过代理方法,在里面调用自定义的JS脚本
-(void)webViewDidFinishLoad:(UIWebView *)webView{
//程序会一直调用该方法,所以判断若是第一次加载后使用我们自定义的js,此后不再调用JS,否则会出现网页抖动现象
if (!_isFirstLoadWeb) {
_isFirstLoadWeb = YES;
//获取当前页面的url
NSString *url = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
//获取页面的title
NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
NSLog(@"%@----%@",url,title);
//给webView添加一个自定义的JavaScript
[webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.text = \"function myFuncation(){"
"var field = document.getElementsByName('word')[0];"
"field.value = '夏先森的博客园';"
"document.forms[0].submit();"
"}\";"
"document.getElementsByTagName('head')[0].appendChild(script);"];
//开始调用自定义的JavaScript
[webView stringByEvaluatingJavaScriptFromString:@"myFuncation();"];
}else{
return;
}
}
@end
演示截图如下:
-- ::24.670 OC调用JS[:] https://m.baidu.com/----百度一下

示例二:通过滑动条动态改变网页中字体的大小
1.首先导入JavaScriptCore.framework这个框架

2.创建webView、设置代理、请求手机端百度
#import "ViewController.h"
#import <JavaScriptCore/JavaScriptCore.h> #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height @interface ViewController ()<UIWebViewDelegate>
@property (strong,nonatomic)UIWebView *webView;
@property (strong,nonatomic)UIActivityIndicatorView *activityIndicator;
@property (strong,nonatomic)UISlider *slider;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; //1.创建slider
_slider = [[UISlider alloc]initWithFrame:CGRectMake(, , SCREEN_WIDTH-, )];
[_slider addTarget:self action:@selector(SliderChanged) forControlEvents:UIControlEventValueChanged];
_slider.maximumValue = 1000.0f;
_slider.minimumValue = 10.0f;
_slider.value = 10.0f;
[self.view addSubview:_slider]; //2.创建webView
self.webView = [[UIWebView alloc]initWithFrame:CGRectMake(, , SCREEN_WIDTH, SCREEN_HEIGHT-)];
self.webView.scalesPageToFit = YES;
self.webView.backgroundColor = [UIColor clearColor];
self.webView.delegate = self;
[self.view addSubview:self.webView];
NSURL *URL = [NSURL URLWithString:@"http://m.baidu.com"];
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:URL];
[self.webView loadRequest:request]; //3.创建活动指示器
_activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(, , , )];
_activityIndicator.center = self.view.center;
_activityIndicator.backgroundColor = [UIColor grayColor];
_activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
[self.view addSubview:_activityIndicator];
}
3.滑动滑动条来改变网页字体大小
-(void)SliderChanged{
NSString *str1 = [NSString stringWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust = '%f%%'",_slider.value];
[_webView stringByEvaluatingJavaScriptFromString:str1];
}
@end
演示截图如下:


iOS:在OC中调用JS脚本的更多相关文章
- 【iOS】网页中调用JS与JS注入
非常多应用为了节约成本,做出同一时候在Android与iOS上都能使用的界面,这时就要使用WebView来做.Android和IOS上都有WebView,做起来非常省事.当然这时就要考虑怎样在Andr ...
- java中调用js脚本
JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...
- iOS之oc与html之间的交互(oc中调用js的方法)
一.运行的效果图 1.刚开始的效果 2.运行结束后的效果 二.准备工作 1.准备一个html文件导入到oc工程中 2.jiaohu.html文件的原始内容 3.从oc语言中操作.html文 ...
- ios开发--网页中调用JS与JS注入
先将网页弄到iOS项目中: 网页内容如下, 仅供测试: <html> <head> <meta xmlns="http://www.w3.org/1999/xh ...
- 在<a></a>标签中调用javascript脚本
有时候,我们点击了<a></a>标签(除了跳转到指定链接外)想要它调用某个方法,及调用javascript脚本,该如何做: 方法1:<a href="javas ...
- java调用js脚本语言
在我们开发的过程中,可能有这么一种情况,在java中需要取调用js方法完成一些事情.那么什么时候可能出现这种情况呢.比如我们使用爬虫模拟登录别的网站,但有些网站前台使用js对密码进行了加密处理,那么就 ...
- Firebug中调试中的js脚本中中文内容显示为乱码
Firebug中调试中的js脚本中中文内容显示为乱码 设置 页面 UFT-8 编码没用, 解决方法:点击 "Firebug"工具栏 中的"选项"---" ...
- 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数
[问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...
- a 标签中调用js的几种方法 文章摘自他人
我们常用的在a标签中有点击事件:1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题 ...
随机推荐
- JVM监控常用命令行工具
jps jps -mlv //列出正在运行的虚拟机进程 jstat jstat -gc pid //监视java堆状况 显示列名 具体描述 S0C 年轻代中第一个survivor(幸存区)的容量 (字 ...
- P3957 跳房子(二分答案+单调队列优化DP)
题目链接:https://www.luogu.org/contestnew/show/4468 题目大意:跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则 ...
- 多路复用I/O模型epoll() 模型 代码实现
epoll模型 int epoll_create(int maxevent) //创建一个epoll的句柄 然后maxevent表示监听的数目的大小int epoll_ctl(int epollfd, ...
- Python 分页功能
自定义分页组件 """ 自定义分页组件的使用方法: pager_obj = Pagination(request.GET.get('page',1),len(HOST_L ...
- hdu 4198:Quick out of the Harbour解题报告
Quick out of the Harbour Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- Java学习笔记(一)——关于java中的String类
[前面的话] 毕业将近6个月了,试用期也快要过去了,期待接下来的日子.在金融类性质的机构,最痛苦的是也许就是大部分系统外包,所以比较少写代码,在这六个月中只写了1个月左右的代码,然后每天都在做一些比较 ...
- CentOS7.5安装坚果云
1.下载坚果云rpm包,对于CentOS,选fedora那个版本的包 https://www.jianguoyun.com/s/downloads/linux 2.安装 坚果云安装依赖notify-p ...
- android studio偏好设置
1.主题设置,可以选择白色主题及黑色主题 2.代码字体大小 3.生成新的主题 主题命名 4.加入代码时,自动引用库 5.合作菜单生成菜码 6.命名空间设置 字段设置为大写,静态字段设置为小写 SDK设 ...
- pytho中pickle、json模块
pickle & json 模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 json模块提供了四 ...
- Mac OS X 更新JAMF域控配置
在终端执行以下命令即可更新jamf域控配置属性 sudo jamf mcx # 应用被管理的配置信息 sudo jamf policy -trigger # 检查触发器策略 sudo jamf rec ...