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等参数的时候很容易出问题 ...
 
随机推荐
- HDU-5281
			
Senior's Gun Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
 - jmap 查看 map 内存占用
			
cmd jps查看进程id jmap -dump:format=b,file=/tmp/dump.dat 进程id eclipse安装mat http://blog.csdn.net/bohu83 ...
 - linux下环境变量设置的问题
			
在当前环境变量前新增加一个路径 export PATH=/your/bin/path:$PATH export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_P ...
 - mysql部署后无法远程连接的原因(错误代码10061),服务监听127.0.0.1和0.0.0.0的区别
			
在Ubuntu上部署mysql服务并添加了一个非root用户后,发现无法远程连接, Navicat连接mysql出现2003——can't connect to mysql server on loc ...
 - Matlab处理数据导出Paraview可读的vtk文件(一)
			
Paraview是一个开源的可视化软件. 用到matlab子程序从这里下载 或者到博客末尾复制粘贴 子程序名为 vtkwrite 示例1: load mri D = squeeze(D); vtkwr ...
 - AC日记——旅游 bzoj 2157
			
2157 思路: LCT: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 400005 #define IN ...
 - hihoCoder #1870 : Jin Yong’s Wukong Ranking List-闭包传递(递归) (ACM-ICPC Asia Beijing Regional Contest 2018 Reproduction A) 2018 ICPC 北京区域赛现场赛A
			
P1 : Jin Yong’s Wukong Ranking List Time Limit:1000ms Case Time Limit:1000ms Memory Limit:512MB Desc ...
 - Git常用命令速查手册
			
Git组成 1.初始化仓库 git init 2.将文件添加到仓库 git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文 ...
 - 洛谷——P1618 三连击(升级版)
			
P1618 三连击(升级版) 题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”. //感谢 ...
 - 洛谷——P1276 校门外的树(增强版)
			
P1276 校门外的树(增强版) 题目描述 校门外马路上本来从编号0到L,每一编号的位置都有1棵树.有砍树者每次从编号A到B处连续砍掉每1棵树,就连树苗也不放过(记 0 A B ,含A和B):幸运的是 ...