YPWebView 1.3.0

YPWebView 1.3.0

测试已测试
语言语言 Objective CObjective C
许可证 MIT
发布上次发布2016年6月

张高堂 维护。



YPWebView 1.3.0

YPWebView 简介

混合 UIWebView 和 WKWebView,根据系统自动选择控件。

1、用到的框架

  • WebKit.framework
  • JavaScriptCore.framework

2、安装方式: 使用 Cocoaspod 安装

    pod 'YPWebView'

YPWebView 特性

  • YPWebView 支持 IOS 7 以上的系统。

  • 在 IOS7 下使用 UIWebView 控件与 JavascriptCore,在 IOS8 以上版本使用 WKWebView 控件。

  • 优化了历史后退操作,针对 APP 访问网页的后退优化操作。(忽略页内跳转、POST 请求...)

    customBackAction = YES

  • 整合了 UIWebView 与 WKWebView 的代理事件。

  • 默认实现了 WKWebView UIDelegate 代理事件,实现弹出提示框、确认框、输入框。

  • 解决了 WKWebView 网页内执行 JS window.open 无响应的问题。(解决方案)

  • 统一了 UIWebView 与 WKWebview 调用原生程序的方式。
    执行 window.webkit.messageHandlers.YP_hdk.postMessage({name:'value'}) 向原生程序发送消息。


YPWebView 使用

一、初始化

  @interface WebViewController ()<YPWebViewDelegate,WKScriptMessageHandler>
  @property(nonatomic,strong) YPWebView *webView;
  @end

  @implementation WebViewController

  -(void)webViewInit{
    if ([WKWebView class]) {

        WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];

        self.webView = [[YPWebView alloc] initWithFrame:self.view.bounds withConfiguration:configuration];

        self.webView.wkUIDelegateViewController = self;
        //self.webView.wkWebView.UIDelegate = self;

    }else{
        self.webView = [[YPWebView alloc] initWithFrame:self.view.bounds];
    }

    self.webView.delegate = self;

    self.webView.customBackAction = YES;    //自定义的后退操作
  }

  @end

二、请求网页

  • 1、加载远程 URLRequest: -loadRequest:

  • 2、加载本地、远程的 HTMLString: -loadHTMLString:baseURL:

  • 3、加载本地的 HTML 文件: -loadFilePath:baseFilePath:
    解决了在 IOS8 以上,UIWebView 与 WKWebView 加载本地 HTML 文件不显示本地资源(css、图片、js 文件)的问题。


三、JS 调用原生程序

YPWebView 统一了 UIWebView 与 WKWebview 的 js 调用原生程序的方式。

  1. js 通过执行 window.webkit.messageHandlers.YP_hdk.postMessage({name:'value'}) 向原生程序发送消息。

  2. 原生程序通过实现 YPWebviewDelegate 的 -YPwebview:receiveScriptMessage 方法接收 js 发送来的数据并处理。