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

//以必应网站为例

[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. InstallShield高级应用--检查是否安装ORACLE或SQL Server

    InstallShield高级应用--检查是否安装ORACLE或SQL Server   实现原理:判断是否存在,是通过查找注册表是否含有相应标识来判断的. 注意:XP与WIN7系统注册表保存方式不一 ...

  2. android之APN

    APN全称是Access Point Name,中文即接入点,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络. android系统把所有的APN都保存在数据库中,数据库绝对 ...

  3. [转] windows7 IIS管理器 在计算机“.”上没有找到WAS服务

    原文地址:windows7 IIS管理器 在计算机"."上没有找到WAS服务作者:云中的风 OS:windows7旗舰版 产生问题原因:运行金蝶K3-HR时客户端提示中间层服务器不 ...

  4. 自动化测试(二):QTP验证点

    1 程序自带验证点 自带验证点:图形界面insert  ->  checkpoint Standard Checkpoint 标准验证:用于检查测试对象的属性 Text Checkpoint 文 ...

  5. Xcode中Info.plist文件各个键的作用说明【搜藏】

    Localiztion native development region --- CFBundleDevelopmentRegion 本地化相关,如果⽤户所在地没有相应的语言资源,则用这个key的v ...

  6. 多线程之RunLoop

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  7. 浅析ado.net获取数据库元数据信息 DeriveParameters

    写这个文章源于早先对ADO.Net获取数据库元数据上的认识,去年我在阅读ADO.Net Core Reference的时候曾经注意过DataSet的FillSchema的这个方法.这方面,在我之前的随 ...

  8. Makefile学习与进阶之Makefile.am和$$(M)的意思

    (1)makefile 中,出现$$(M) 是什么意思,发现还是看实际的Makefile长知识啊 在makefile中,会经常使用shell命令,也经常见到$var 和 $$var的情况,有什么区别呢 ...

  9. leetcode—Best Time to Buy and Sell stocks III

    1.题目描述 Say you have an array for which the ith element is the price of a given stock on day i.   Des ...

  10. HW6.28

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...