我们在封装网页的时候经常会遇到需要往网页里面的控件添加数据,但是怎么添加又成了难点。本人最近在开发的时候就遇到这样的事,解决之后,来和大家分享一下。

//以必应网站为例

[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的简单交互的更多相关文章

  1. IOS UIWebView与js的简单交互swift3版

    在开发过程中,我们可能遇到ios代码与js交互的情况,本人第一次使用遇到了很多坑,这里纪录一下,方便自己,也方便需要的人. 1.第一步先建一个接口(协议)并继承JSExport 这里实现两个方法提供给 ...

  2. iOS 使用node js 搭建简单的本地服务器

    一.前提:基于iOS 项目 调用,使用了第三方框架NodeMobile.技术说明关键是 应用生命整个周期只能在应用启动时候开辟的一个线程里申请 一个 node  js 资源.如果终止了运行,重启是不支 ...

  3. iOS中web与Js的交互

    问题 感觉到uni-app框架有pit,公司强推该框架的小哥识趣的闭嘴,考虑到全盘替换周期跟成本挺大,基于uni-app能打包成H5,采用webview+js的原生方式集成 基本结构:原生壳 + we ...

  4. 转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC ----->JS

      目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 ...

  5. 简单web网页与SSM后台交互

    简单web网页与SSM后台交互 情况说明 如今,已经搭建好SSM后台开发环境,并且可以经由postman工具测试成功.现在尝试写出web前端网页,通过实现简单的提交.注册.查询功能来加深对前后端数据传 ...

  6. 用node.js实现简单的web服务器

    node.js实现web服务器还是比较简单的,我了解node.js是从<node入门>开始的,如果你不了解node.js也可以看看! 我根据那书一步一步的练习完了,也的确大概了解了node ...

  7. iOS OC与JS的交互(JavaScriptCore实现)

    本文包括JS调用OC方法并传值,OC调用JS方法并传值 本来想把html放进服务器里面,然后访问,但是觉得如果html在本地加载更有助于理解,特把html放进项目里 HTML代码 <!DOCTY ...

  8. JS与OC交互--简单使用

    直接上代码 .m文件 #import "ViewController.h" @interface ViewController () <UIWebViewDelegate&g ...

  9. HTML(.js) – 最简单的方式操作 DOM 的 JS 库

    HTML(.js) 是一个轻量的(压缩后~2kb) JavaScript 库,简化了与 DOM 交互的方法. 这个 JavaScript 库的方法可读性很好,并具有搜索和遍历 DOM 的方法.相比 j ...

随机推荐

  1. Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别?

    一个帖子的整理: Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别如果你不带参数的实例化:Handler ...

  2. Python中,如何初始化不同的变量类型为空值

    参考文章  Python中,如何初始化不同的变量类型为空值 常见的数字,字符,很简单,不多解释. 列表List的其值是[x,y,z]的形式 字典Dictionary的值是{x:a, y:b, z:c} ...

  3. Testlink & Redmine组合拳演练

    环境:Ubuntu 14.04LTS 一.部署testlink 查看已安装软件: dpkg -l *apache* (apache2.4.7) dpkg -l *php* (未安装) dpkg -l ...

  4. CentOS 7.0 安装 python3.X 脚本

    #!/bin/sh #第一个Linux下的脚本,太多不明白的地方,只是依着网上的例子照葫芦画瓢,能正常运行即可 #运行环境 CentOS 7.0 版本 #首行指定程序的路径,以#号开头的行是注释行 # ...

  5. Log Explorer使用说明

    一.介绍 Log Explorer主要用于对MSSQLServer的事物分析和数据恢复.你可以浏览日志.导出数据.恢复被修改或者删除的数据(包括执行过update,delete,drop和trunca ...

  6. iPhone更新失败后如何恢复数据

    iPhone5最好不要用wifi下更新ios8.1,因为该固件比较大,很容易中途出问题失败,如果失败也不要怕,想要恢复数据还是有希望的. 如果不幸进入恢复模式,还没有实现备份,千万别点恢复,那就啥都没 ...

  7. East Central North America Region 2015

    E 每过一秒,当前点会把它的值传递给所有相邻点,问t时刻该图的值 #include <iostream> #include <cstdio> #include <algo ...

  8. javscript面试题(一)

    你如何理解HTML结构的语意化? 1.去掉或样式丢失的时候能让页面呈现清晰的结构:2.屏幕阅读器(如果访客有视障)会完全根据你的标记来“读”你的网页:3.PDA.手机等设备可能无法像普通电脑的浏览器一 ...

  9. Matlab GUI界面

    做SVD的时候,看学姐的demo,用到了matlab的GUI,感兴趣就自己学了一下: 从简单的例子说起吧. 创建Matlab GUI界面通常有两种方式: 1,使用 .m 文件直接动态添加控件     ...

  10. Code First 更新数据库结构

    参考:http://blog.csdn.net/sxycxwb/article/details/12186159 0.删除之前的数据库 1.Run the Enable-Migrations comm ...