UIWebView复习

  UIWebView中网页和客户端方法互相调用很重要

  1.js调用oc

  网页部分

function testClick(cmd)
{
    var str1="ios";
    window.location.href="ios://"+cmd+":/"+str1;
}

<p><input type="button" id="enter" value="enter"onclick="testClick(‘update:‘);"/></p>
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *urlString = [[request URL] absoluteString];
    urlString = [urlString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"urlString=%@",urlString);
    NSArray *urlComps = [urlString componentsSeparatedByString:@"://"];

    if([urlComps count] && [[urlComps objectAtIndex:0] isEqualToString:@"ios"])
    {
        NSArray *arrFucnameAndParameter = [(NSString*)[urlComps objectAtIndex:1] componentsSeparatedByString:@"/"];
        NSString *funcStr = [arrFucnameAndParameter objectAtIndex:0];
         if([funcStr isEqualToString:@"update"])
            {
                // 调用的方法,本地执行的代码
            }
        }
        return NO;
    }
    return YES;
}

  网页的按钮被点击了,通过window.location.href="ios://"+cmd+":/"+str1; 发送给浏览器,UIWebView获取到这句话,根据这句话里面的内容做事情。

  如果window.location.href="我要吃饭";,本地接收到这句话,判断有“我要吃饭”,然后就执行吃饭方法。说白了就是根据网页传过来的值,来执行不同方法。

  2.oc调用js

function postStr()
{
           return "javaScript返回值啦";
 }
-(IBAction)buttonClicked:(id)sender
{
    NSString *str = [self.webview     stringByEvaluatingJavaScriptFromString:@"postStr();"];
    NSLog(@"JS返回值:%@",str);
}

  点击了本地的buttonClicked按钮后,就能调用网页的js代码。把js代码执行后的返回值传递给了客户端。

时间: 2024-10-20 04:35:47

UIWebView复习的相关文章

UIWebView的使用

利用国庆假期,复习了一下之前学的知识,发现之前的知识自己都忘的差不多了,赶紧的抓紧时间好好的练习练习,为下个月找工作做好准备啊...... #import "ViewController.h" @interface ViewController ()<UIWebViewDelegate> @property (weak, nonatomic) IBOutlet UIWebView *webView; @end @implementation ViewController -

C++基础复习

一. C++与C的比较: C语言是一个结构化语言,它的重点在于算法和数据结构,C语言的设计首先要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到的输出(或实现过程(事物)控制). C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制. 所以C语言和C++的最大区别在于它们解决问题的思想不同,一个面向过程一个面向对象. C++对C的"增强",表现在六个方面: 1.类型检测更为严格. 2.

大量逻辑判断优化的思路——责任链模式复习总结及其和状态模式对比

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的总结知识点如下: 责任链模式概念和例子 使用的条件 和状态模式的比较分析 责任链的优缺点 纯的责任链和不纯的责任链 javax.servlet.Filter#doFilter()方法源码分析 基于AOP思想,模拟一个拦截器 前面说了一个状态模式,总结过程中发现和这个责任链的使用场景很类似,都是为了解耦大量复杂业务逻辑判断的,那么他们有什么不同呢?回忆状态模式——状态模式允许通过改变对象的内部状态而改变对象自身的行为,这个对象

算法分析与设计复习

算法分析与设计复习 2016年初,研一上学期期末考试前,复习并总结算法分析与设计科目的内容.复习过程参照<算法导论>中文第2版,同时参照PPT,章节划分根据PPT内容 概要: 第一章 概述 第二章 插入排序&分治策略 第三章 复杂度分析 第四章 堆与堆排序 第五章 快速排序 第六章 线性时间排序 第一章 概述 算法的应用范围 算法在诸如生物等诸多领域有其应用 算法的意义 算法在很多情况下让不可能完成的事情变成了可能,让处理的很慢的过程变快. 一个铺垫 一串不全为0的数,怎么取能拿到一段

UIWebView中的JS和OC的互调

html的代码如下: <html> <head>     <meta xmlns="http://www.w3.org/1999/xhtml" http-equiv="Content-Type" content="text/html; charset=utf-8" />     <title>这是一个示例html文件</title>     <script Type='text/j

iOS中UIWebView的使用详解

iOS中UIWebView的使用详解 一.初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如我加载百度的主页:     UIWebView * view = [[UIWebView al

点击UIWebView上文字调用方法

有的时候应用中需要通过点击网页中的文字或者按钮调用一个方法或事件,这时需要我们将网页与应用之间建立联系. 1.和服务器人员约定一个协议例如ios:// 2.当点击网页上文字或按钮时,跳转这个约定协议的路径 3.通过webview代理方法监听url,判断是哪个操作决定调用方法. window.location.href = 'iso://openCamer'; #pragma mark - UIWebViewDelegate /** 当webView发送一个请求之前都会调用这个方法, 返回YES,

UIWebView

目录 对UIWebView的理解 UIWebView的操作 UIWebView加载网页的三种方式 UIWebView的代理 Objective C与JS的交互 对UIWebView的理解 UIWebView的操作 UIWebView加载网页的三种方式 [_webView loadRequest:NSURLRequest]; [_webView loadHTMLString: baseURL:NSURL]; [_webView loadData:(NSData *)data MIMEType:(N

UIWebView页面的控制(二)

1.UIWebView的内容控制的属性/方法列表 loading属性               确认当前页面是否在读入中 canGoForward属性   确认goForward  方法是否可执行,可执行为yes: canGoBack属性        确认goBack  方法是否可执行,可执行为yes: goBack方法               返回前一个页面 goForword方法          进入下一个页面 reload方法                 重新读入当前页 st