iOS web与js的简单交互
我们在封装网页的时候经常会遇到需要往网页里面的控件添加数据,但是怎么添加又成了难点。本人最近在开发的时候就遇到这样的事,解决之后,来和大家分享一下。
//以必应网站为例
[web loadRequest:
[NSURLRequestrequestWithURL:
[NSURL URLWithString:@"http://www.bing.com/?FORM=Z9FD1"]]];
以下就是主要代码,只有几句
//获取当前页面的title
NSString *title =
[webView
stringByEvaluatingJavaScriptFromString:
@"document.title"];
NSLog(@"title====%@",title);
//获取当前URL
NSString *URL =
[webView
stringByEvaluatingJavaScriptFromString: @"document.location.href"];
NSLog(@"URL===%@",URL);
//得到网页代码
NSString *html =
[webView
stringByEvaluatingJavaScriptFromString:
@"document.documentElement.innerHTML" ];
NSLog(@"html====%@",html);
//拼接字符串 根据网页name找到控价并赋值
NSString *str = @"随_的简书";
NSString *JSStr =
[NSString stringWithFormat:
@"document.getElementsByName('q')[0].value = ('%@');",str];
[webView stringByEvaluatingJavaScriptFromString: JSStr];
以下是全部代码,commit+c commit+v可以直接运行
@interface ViewController ()
@property (weak, nonatomic) UIWebView *web;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIWebView *web =
[[UIWebView alloc] initWithFrame:
[UIScreen mainScreen].bounds];
UIButton *back =
[[UIButton alloc] initWithFrame:CGRectMake
(0, 0, self.view.frame.size.width,self.view.frame.size.width / 7.5)];
[back setBackgroundColor: [UIColor orangeColor]];
[back setTitle:@"back" forState:UIControlStateNormal];
[back addTarget:self
action: @selector(back)
forControlEvents:UIControlEventTouchUpInside];
//以必应为例
[web loadRequest:
[NSURLRequest requestWithURL:
[NSURL URLWithString:
@"http://www.bing.com/?FORM=Z9FD1"]]];
web.delegate = self;
web.scalesPageToFit =YES;
web.scrollView.delegate = self;
self.web = web;
[self.view addSubview:web];
[self.view addSubview:back];
}
#pragma mark ---Delegate
-(void) webViewDidStartLoad:
(UIWebView *)webView{
NSLog(@"开始加载---") ;
}
- (void) webViewDidFinishLoad:
(UIWebView *)webView {
NSLog(@"加载完成---");
//获取当前页面的title
NSString *title =
[webView
stringByEvaluatingJavaScriptFromString:
@"document.title"];
NSLog(@"title====%@",title);
//获取当前URL
NSString *URL =
[webView
stringByEvaluatingJavaScriptFromString:
@"document.location.href"];
NSLog(@"URL===%@",URL);
//得到网页代码
NSString *html =
[webView
stringByEvaluatingJavaScriptFromString:
@"document.documentElement.innerHTML" ];
NSLog(@"html====%@",html);
//拼接字符串 根据网页name找到控价并赋值
NSString *str = @"随_的简书";
NSString *JSStr =
[NSString stringWithFormat:
@"document.getElementsByName('q')[0].value = ('%@');",str];
[webView stringByEvaluatingJavaScriptFromString:JSStr];
}
- (void) webView:
(UIWebView *)webView
didFailLoadWithError:(NSError *)error {
NSLog(@"加载失败===%@",error);
}
//当网页位置为顶部 不允许继续下拉
- (void) scrollViewDidScroll:
(UIScrollView *)scrollView {
if (self.web.frame.origin.y == 0) {
self.web.scrollView.bounces = NO;
return;
}
}
//webView的每次页面跳转都会执行,在这里可以得到想要的数据
- (BOOL)webView:
(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"页面跳转");
return YES;
}
//返回
- (void) back {
[self.web goBack];
}
iOS web与js的简单交互的更多相关文章
- IOS UIWebView与js的简单交互swift3版
在开发过程中,我们可能遇到ios代码与js交互的情况,本人第一次使用遇到了很多坑,这里纪录一下,方便自己,也方便需要的人. 1.第一步先建一个接口(协议)并继承JSExport 这里实现两个方法提供给 ...
- iOS 使用node js 搭建简单的本地服务器
一.前提:基于iOS 项目 调用,使用了第三方框架NodeMobile.技术说明关键是 应用生命整个周期只能在应用启动时候开辟的一个线程里申请 一个 node js 资源.如果终止了运行,重启是不支 ...
- iOS中web与Js的交互
问题 感觉到uni-app框架有pit,公司强推该框架的小哥识趣的闭嘴,考虑到全盘替换周期跟成本挺大,基于uni-app能打包成H5,采用webview+js的原生方式集成 基本结构:原生壳 + we ...
- 转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC ----->JS
目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 ...
- 简单web网页与SSM后台交互
简单web网页与SSM后台交互 情况说明 如今,已经搭建好SSM后台开发环境,并且可以经由postman工具测试成功.现在尝试写出web前端网页,通过实现简单的提交.注册.查询功能来加深对前后端数据传 ...
- 用node.js实现简单的web服务器
node.js实现web服务器还是比较简单的,我了解node.js是从<node入门>开始的,如果你不了解node.js也可以看看! 我根据那书一步一步的练习完了,也的确大概了解了node ...
- iOS OC与JS的交互(JavaScriptCore实现)
本文包括JS调用OC方法并传值,OC调用JS方法并传值 本来想把html放进服务器里面,然后访问,但是觉得如果html在本地加载更有助于理解,特把html放进项目里 HTML代码 <!DOCTY ...
- JS与OC交互--简单使用
直接上代码 .m文件 #import "ViewController.h" @interface ViewController () <UIWebViewDelegate&g ...
- HTML(.js) – 最简单的方式操作 DOM 的 JS 库
HTML(.js) 是一个轻量的(压缩后~2kb) JavaScript 库,简化了与 DOM 交互的方法. 这个 JavaScript 库的方法可读性很好,并具有搜索和遍历 DOM 的方法.相比 j ...
随机推荐
- 设计模式_Proxy_代理模式
形象例子: 跟MM在网上聊天,一开头总是“hi,你好”,“你从哪儿来呀?”“你多大了?”“身高多少呀?”这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些话都设置好了自动的回答,接收到其他的 ...
- android NDK 实用学习(四)-类缓存
1,为什么需要类缓存: 答:由于频繁的查找类及类成员变量需要很大的时间与空间开销,可参考如下文章: http://www.ibm.com/developerworks/cn/java/j-jni/ h ...
- Java异常的面试问题及答案-Part 1
本文由 ImportNew - 韩远青 翻译自 Journaldev. Java提供了一个健壮的.面向对象的方法来处理出现异常,称为Java异常处理.我以前写过一篇长文章来介绍Java异常处理,今天我 ...
- Getty – Java NIO 框架设计与实现
前言 Getty是我为了学习 Java NIO 所写的一个 NIO 框架,实现过程中参考了 Netty 的设计,同时使用 Groovy 来实现.虽然只是玩具,但是麻雀虽小,五脏俱全,在实现过程中,不仅 ...
- Web缓存基础:术语、HTTP报头和缓存策略
简介 对于您的站点的访问者来说,智能化的内容缓存是提高用户体验最有效的方式之一.缓存,或者对之前的请求的临时存储,是HTTP协议实现中最核心的内容分发策略之一.分发路径中的组件均可以缓存内容来加速后续 ...
- 转载 ASP.NET Web API 学习
转载关于ASP.NET Web API 的学习网址 http://www.cnblogs.com/aehyok/p/3432158.html http://www.mashangpiao.net/Ar ...
- 转载 SharePoint 2013 Search功能
转载原出处: http://www.cnblogs.com/OceanEyes/p/SharePont-2013-Search-Develop.html 阅读目录 启用Search Service A ...
- openstack系列阅读目录
一 keystone系列 keystone基础 网关协议cgi,fastcgi,wsgi,uwsgi keystone源码分析 keystone部署及使用 keystone客户端工作介绍 二 glan ...
- linux安装oracle
目 录 一.硬件要求二.软件三.系统安装注意四.安装Oracle前的系统准备工作五.安装Oracle,并进行相关设置六.升级Oracle到patchset 10.2.0.4七.使用rlwrap调用sq ...
- 解决ecshop在线客户点击无法唤醒QQ问题
找到default/library/page_footer.lbi中找到QQ代码的相应位置,然后你会发现之前模板里面为什么QQ点击不能对话,是因为QQ客服安装包中的JS代码有的可能是比较旧的代码了. ...