WKWebView庫(kù) & WebView控件 & OCWeb 特性詳解

iOS Web 加載相關(guān)

  • 主要使用兩種技術(shù): WebView & WebKit
  • JS 交互: 通過(guò)監(jiān)聽 JS Request 并使用 evaluateJS 函數(shù)進(jìn)行交互動(dòng)作
  • 每個(gè) App 如果使用 webView 加載了網(wǎng)頁(yè), 就會(huì)根據(jù) App 的 bundle 生成對(duì)應(yīng)的 storage ,并且實(shí)際上, 操作 cookie 以及 storage 的對(duì)象是以 app 為單位的單例對(duì)象, 甚至是全局的單例對(duì)象, 不過(guò)在操作實(shí)際的緩存的時(shí)候回自動(dòng)根據(jù)當(dāng)前 app 進(jìn)行選擇

WebView 控件整理

  • 概述:
    原生的 webview 的整個(gè)框架提供的 API 特別少, 除了主要的 數(shù)據(jù)源, 加載回調(diào) 等必須函數(shù)之外, 就只提供了四個(gè)最基本的功能, 以及十個(gè)以內(nèi)的網(wǎng)頁(yè)屬性設(shè)置.

    • WebView 提供的整體的所有功能:

    1.加載流程 ( 數(shù)據(jù)源, 監(jiān)聽函數(shù) - 幾個(gè)監(jiān)聽階段 ) - 監(jiān)聽階段
    * 數(shù)據(jù)源: 1.Request 2.HTMLString 3.HTML.Data
    * 準(zhǔn)備 - 加載
    * 開始加載
    * 加載成功
    * 加載失敗

    2.附加行為
    * 基本功能: 1.刷新 2.停止加載 3.前進(jìn).后退 4.加載 JS 數(shù)據(jù)

    3.附加屬性
    * 頁(yè)面縮放
    * 是否檢查電話號(hào)碼
    * 是否允許內(nèi)聯(lián)媒體回放
    * 媒體回放需要用戶操作
    * 媒體回放允許 AirPlay
    * 是否鎮(zhèn)壓增量渲染
    * 鍵盤調(diào)起是否需要用戶操作
    * 是否允許畫中畫
    * 是否允許鏈接預(yù)覽
    * WebPage 相關(guān)屬性

WebKit 庫(kù)整理

  • 擴(kuò)充之后的 Web 庫(kù)相比較 WebView , 內(nèi)容進(jìn)行了細(xì)分, 因此擴(kuò)展成為有 32 個(gè)類的大庫(kù), 但是整體進(jìn)行分析之后, 除了主要的 WKWebView 類目, 剩余類目都以下四個(gè)方面展開:

    • BackForwardList: 控件前后加載的網(wǎng)頁(yè)集合, 數(shù)組形式
    • Configuration: 配置類, 主要涉及頁(yè)面屬性設(shè)置等
    • NavgationDelegage: 導(dǎo)航類, 主要涉及 WebView 的頁(yè)面跳轉(zhuǎn)問(wèn)題
    • UIDelegate: 界面類, 主要涉及 Feature. PreviewElement. 等
以下為詳細(xì)的框架結(jié)構(gòu)

/**
 WebView 類庫(kù)主文件, 主要功能分為以下四個(gè)模塊
 * WKBackForwardList
 * Configuration
 * NavgationDelegage
 * UIDelegate
 */
#import <WebKit/WKWebView.h>

//常規(guī)宏定義文件 & 錯(cuò)誤對(duì)象文件
#import <WebKit/WKFoundation.h>
#import <WebKit/WebKitLegacy.h>
#import <WebKit/WKError.h>

//瀏覽記錄
#import <WebKit/WKBackForwardList.h> // 被動(dòng)信息類- WebView 加載過(guò)的頁(yè)面數(shù)組
#import <WebKit/WKBackForwardListItem.h> // 被動(dòng)信息類- Item 內(nèi)包含了頁(yè)面的基本信息

//網(wǎng)頁(yè)配置信息
/**
 主要配置可配置一下方面
 * 進(jìn)程池
 * 偏好設(shè)置
 * 用戶內(nèi)容控制器
 * 網(wǎng)站數(shù)據(jù)存儲(chǔ)
 * 雜項(xiàng): .阻止過(guò)分渲染 .用戶代理應(yīng)用名稱 .內(nèi)聯(lián)媒體播放器相關(guān)(畫中畫相關(guān)) .網(wǎng)頁(yè)數(shù)據(jù)探測(cè)類型 .忽略頁(yè)面縮放 .界面重定向策略 .URLScheme 相關(guān)管理 等
 */
#import <WebKit/WKWebViewConfiguration.h>
{
    /**
     FrameInfo -> SecurityOrginal
     主要提供了當(dāng)前網(wǎng)頁(yè)的一系列相關(guān)信息
     */
    #import <WebKit/WKFrameInfo.h>// 被動(dòng)信息類- 頁(yè)面框架相關(guān)信息: 當(dāng)前 view. 保密源. 請(qǐng)求對(duì)象. 是否為主框架.
    #import <WebKit/WKSecurityOrigin.h>// 被動(dòng)信息類- 保密源詳細(xì)信息: 協(xié)議. 主機(jī)地址. 端口號(hào).
    
    /**
     URLSchemeHandler -> URLSchemeTask
     主要提供了 URLScheme 的相關(guān)活動(dòng)監(jiān)聽接口
     */
    #import <WebKit/WKURLSchemeHandler.h>// 被動(dòng)函數(shù)類- URLScheme 句柄協(xié)議: 提供了開始和結(jié)束的監(jiān)聽函數(shù)
    #import <WebKit/WKURLSchemeTask.h>// 被動(dòng)函數(shù)類- URLSchemeTask 協(xié)議: 提供了請(qǐng)求信息, 以及 接收響應(yīng). 接收數(shù)據(jù). 完成. 失敗. 的函數(shù)
    
    /**
     主要提供了 WebView 的進(jìn)程池, 用來(lái)優(yōu)化內(nèi)存等, 類似于 tableview 的重用, 沒(méi)有操作權(quán)限.
     */
    #import <WebKit/WKProcessPool.h> // 進(jìn)程池
    
    /**
     主要提供了網(wǎng)頁(yè)偏好設(shè)置的入口, 可以設(shè)置一些網(wǎng)頁(yè)屬性.
     */
    #import <WebKit/WKPreferences.h> // 主動(dòng)設(shè)置類- 最小縮放比例. JS相關(guān)設(shè)置. 能否使用插件插件.
    
    /**
     UserContentController -> 1.ScriptMessageHandler 2.ContentRule 3.UserScript
     主要功能是管理以上三種消息, 可以進(jìn)行增刪操作.
     */
    #import <WebKit/WKUserContentController.h> //信息類- 用戶腳本 腳本消息 頁(yè)面過(guò)濾規(guī)則
    {
        /**
         ScriptMessageHandler -> ScriptMessage
         腳本消息相關(guān)
         */
        #import <WebKit/WKScriptMessageHandler.h>// 被動(dòng)函數(shù)類- 監(jiān)聽 JS 消息
        #import <WebKit/WKScriptMessage.h>// 被動(dòng)信息類- 提供 JS 消息的相關(guān)數(shù)據(jù)
        
        /**
         ContentRuleListStore -> ContentRuleList
         頁(yè)面過(guò)濾規(guī)則相關(guān)
         */
        #import <WebKit/WKContentRuleListStore.h>// 主動(dòng)函數(shù)類- ContentRule 的增刪改編譯
        #import <WebKit/WKContentRuleList.h>// 被動(dòng)信息類- ContentRule 的標(biāo)識(shí)符
        
        /**
         用戶腳本相關(guān)操作以及屬性獲取
         */
        #import <WebKit/WKUserScript.h>// 主動(dòng)函數(shù)+被動(dòng)信息- 提供了 UserScript 的創(chuàng)建以及創(chuàng)建后的信息獲取
    }
    
    /**
     WebsitDataStore -> CookieStore & DataRecord
     網(wǎng)站數(shù)據(jù)相關(guān)
     */
    #import <WebKit/WKWebsiteDataStore.h>// 主動(dòng)函數(shù)類- 提供了網(wǎng)站數(shù)據(jù) & cookie 的刪查功能
    #import <WebKit/WKHTTPCookieStore.h>// 主動(dòng)+被動(dòng)函數(shù)類- 提供了 cookie 的增刪查功能以及監(jiān)聽功能.
    #import <WebKit/WKWebsiteDataRecord.h>// 被動(dòng)信息類- 提供網(wǎng)站數(shù)據(jù)
}

/**
 NavigationDelegate -> Navigation. NavigationAction. NavigationResponse.
 主要負(fù)責(zé) WebView 在跳轉(zhuǎn)時(shí)的相關(guān)信息傳遞以及函數(shù)監(jiān)聽
 */
#import <WebKit/WKNavigationDelegate.h>
{
    #import <WebKit/WKNavigation.h>// 被動(dòng)信息類- 主要為頁(yè)面加載的進(jìn)度做標(biāo)識(shí)
    #import <WebKit/WKNavigationAction.h>// 被動(dòng)信息類- 主要提供頁(yè)面跳轉(zhuǎn)行為的相關(guān)信息, 網(wǎng)頁(yè)前后框架信息. 跳轉(zhuǎn)請(qǐng)求對(duì)象. 跳轉(zhuǎn)行為. 點(diǎn)擊次數(shù).
    #import <WebKit/WKNavigationResponse.h>// 被動(dòng)信息類- 主要提供跳轉(zhuǎn)后接收到的響應(yīng)信息
}

/**
 UIDelegate -> OpenPanelParameters & PreviewElement
 主要負(fù)責(zé)頁(yè)面相關(guān)變動(dòng)的監(jiān)聽, 包括: 頁(yè)面創(chuàng)建&關(guān)閉. JS 運(yùn)行 提示框&確認(rèn)框&輸入框時(shí)的攔截. 執(zhí)行預(yù)覽時(shí)的監(jiān)聽.
 */
#import <WebKit/WKUIDelegate.h>
{
    
    #import <WebKit/WKWindowFeatures.h>// 被動(dòng)信息類- 提供了頁(yè)面的 Feature 信息, 坐標(biāo). 寬高. 是否允許縮放. 工具條/狀態(tài)欄/標(biāo)簽欄是否可見.
    #import <WebKit/WKOpenPanelParameters.h>// 被動(dòng)信息類- 是否允許多文件上傳
    
    /**
     ActionItem -> ActionItemIdentifier & PreviewElementInfo
     頁(yè)面預(yù)覽相關(guān)類目
     */
    #import <WebKit/WKPreviewElementInfo.h>// 被動(dòng)信息類- 預(yù)覽元素信息, 只提供 url
    #import <WebKit/WKPreviewActionItem.h>// 被動(dòng)信息類- 預(yù)覽行為, 只有一個(gè)標(biāo)識(shí)符屬性用來(lái)標(biāo)識(shí)預(yù)覽行為的類型
    #import <WebKit/WKPreviewActionItemIdentifiers.h>// 被動(dòng)信息類- 預(yù)覽行為類型標(biāo)識(shí)符, 通過(guò)判斷常量字符串判斷預(yù)覽行為類型, 打開. 添加列表. 拷貝. 分享.
    
}

以下為每個(gè)類目的具體功能

#import <WebKit/WKBackForwardList.h>
    {
        
        @Abstract: 裝載 BackForwardItem 的列表, 記錄了 WebView 加載過(guò)的網(wǎng)頁(yè), 將加載過(guò)的多個(gè)網(wǎng)頁(yè)全部記錄存儲(chǔ), 作為數(shù)組形式存在
        
        @ API 整理:
        1.獲取當(dāng)前 Item. 獲取上一個(gè) Item. 獲取下一個(gè) Item
        2.根據(jù) index 獲取 Item, 獲取前面的所有 Items. 獲取后面的所有 Items
        
        * 如果獲取的 Item 超過(guò)了 List 的范圍, 則會(huì)返回 nil.
        
    }
    
#import <WebKit/WKBackForwardListItem.h>
    {
        @Abstract: 記錄 WebPageItem 的對(duì)象, 內(nèi)部全是 readonly 屬性, 主要提供了 URL 以及 title , 雖然有 init 函數(shù), 但是因?yàn)闆](méi)有 url 設(shè)置入口, 因此, 基本不會(huì)被用戶使用.
        
        @ API 整理:
        1. URL
        2. title
        3. initialURL
        
    }
    
#import <WebKit/WKContentRuleList.h>
    {
        
        //關(guān)鍵網(wǎng)址: http://www.jb51.net/article/118145.htm
        
        @Abstract: 本質(zhì)上是可以對(duì)WebView的內(nèi)容添加一些自定義的過(guò)濾規(guī)則, 屬于 webView 的新增功能
        @Abstract: 意譯為內(nèi)容管理列表, 實(shí)際使用方式不明
        
        @ 功能使用思路: 提供一個(gè) JSON 給 WebKit,這個(gè) JSON 包括內(nèi)容的觸發(fā)規(guī)則(trigger)和對(duì)應(yīng)的處理方式(action), 具體的使用需要再研究.
        
        @ API 整理:
        * 只有一個(gè) identifier 屬性, 且為 readonly 屬性, 解釋為 內(nèi)容擴(kuò)展表示的拷貝副本
        
    }
    
#import <WebKit/WKContentRuleListStore.h>
    {
        @Abstract: 屬于 ContentRule 功能的組成部分, 主要是存儲(chǔ), 以及獲取存儲(chǔ)的 ContentRule 內(nèi)容并編譯.
        
        @API:
        1.重要: 存儲(chǔ) ContentRule 函數(shù).
        2.功能: 主要有, 編譯. 查看. 移除. 獲取可用. ~ 內(nèi)容規(guī)則, 基本參數(shù)為 Identifier 以及 回調(diào).
        
    }
    
#import <WebKit/WKError.h>
    {
        
        @Abstract: 配置了 WKError 的錯(cuò)誤域, 含有多個(gè)錯(cuò)誤碼.
        
        @Classify: 9 種
        未知錯(cuò)誤.
        網(wǎng)頁(yè)內(nèi)容進(jìn)程終止.
        webView 無(wú)效.
        JS 解析發(fā)生異常.
        JS 結(jié)果類型不支持.
        ContentRule 編譯失敗. 查看失敗. 移除失敗. 版本匹配錯(cuò)誤.
        
    }
    
#import <WebKit/WKFoundation.h>
    {
        
        @Abstract: 定義了平臺(tái)以及處理器的版本宏定義.
        
    }
    
#import <WebKit/WKFrameInfo.h>
    {
        
        @Abstract: 網(wǎng)頁(yè)的框架信息, 似乎就簡(jiǎn)單的是有關(guān)網(wǎng)頁(yè)的框架信息的集合, 定義中解釋為 Transient And DataOnly, 短暫且僅僅是數(shù)據(jù)的對(duì)象.
        
        @Classfy:
        內(nèi)部只有只讀信息的獲取, 1.當(dāng)前框架是主框架還是子框架 2.框架當(dāng)前的請(qǐng)求對(duì)象( NSURLRequest ) 3.框架的安全源信息( WKSecurityOrginal: 其實(shí)就包含了 協(xié)議, host, 端口號(hào) ) 4.包含此框架的網(wǎng)頁(yè)的 webView
        
    }
    
#import <WebKit/WKHTTPCookieStore.h>
    {
        
        @Abstract: 僅僅是 WK 框架用來(lái)管理 cookie 的對(duì)象
        
        @Classfy: 至于關(guān)于 cookie 的增刪改查函數(shù), 以及監(jiān)聽函數(shù), 監(jiān)聽函數(shù)使用 KVO 方式的代理監(jiān)聽
        
    }
    
#import <WebKit/WKNavigation.h>
    {
        @Abstract: 定義中描述為用來(lái)追蹤網(wǎng)頁(yè)加載過(guò)程的對(duì)象
        
        @Classfy: 無(wú)函數(shù), 無(wú)屬性.
    }
    
#import <WebKit/WKNavigationAction.h>
    {
        @Abstract: 包含有關(guān)可能導(dǎo)致導(dǎo)航的操作的信息, 用于制定策略決策, 其實(shí)就是可能會(huì)導(dǎo)致 Nav 發(fā)生改變, 也就是頁(yè)面發(fā)生跳轉(zhuǎn)的行為對(duì)象.
        
        @Classfy: 內(nèi)部只包含屬性信息, 都是指示頁(yè)面跳轉(zhuǎn)之間的聯(lián)系的數(shù)據(jù).
        * 請(qǐng)求對(duì)象, 導(dǎo)航改變類型(枚舉類型: 例如表單提交, 頁(yè)面刷新等操作), 原框架, 目標(biāo)框架
        * 還有兩個(gè)屬性, NSEventModifierFlags 不知為什么, buttonNumber 似乎是鼠標(biāo)點(diǎn)擊次數(shù)
        
    }
    
#import <WebKit/WKNavigationDelegate.h>
    {
        @Abstract: 主要是用來(lái)監(jiān)聽加載過(guò)程的代理對(duì)象, 在 WK 中頁(yè)面的跳轉(zhuǎn)行為, 基本就被稱作 navigation .
        
        @Classfy:
        
        相比較與 WebView 的 Process Method , Wk 的 Method 數(shù)量更多, 可監(jiān)聽的位置共詳細(xì), 除了基本的, 開始, 結(jié)束, 失敗等函數(shù), 增加以下函數(shù).
        * 接收到重定向的函數(shù)
        * 接收到服務(wù)器要求驗(yàn)證身份的函數(shù)
        * WKNavigationAction & 兩個(gè) Policy : Action 內(nèi)部區(qū)分了多種
        
    }
    
#import <WebKit/WKNavigationResponse.h>
    {
        @Abstract: 信息類-被動(dòng)獲取: 主要提供了 Request, 是否為主框架, 是否能展示 MIME 類型
    }
    
#import <WebKit/WKOpenPanelParameters.h>
    {
        @Abstract: 信息類-被動(dòng)獲取: 包含一個(gè)已經(jīng)指定好的的文件上傳參數(shù)
        
        @Classfy: 只有一個(gè)參數(shù): 文件上傳是否允許多個(gè)文件上傳.
        
    }
    
#import <WebKit/WKPreferences.h>
    {

        @Abstrac: 信息類-主動(dòng)設(shè)置: 網(wǎng)頁(yè)偏好設(shè)置
        
        @Classfy:
        * 字體縮放尺寸
        * 1. 是否可以執(zhí)行 JS 2.JS 能否自動(dòng)打開窗口
        * Java 能否執(zhí)行
        * 是否允許插件
        * 選項(xiàng)卡是否連接焦點(diǎn)?
    }
    
#import <WebKit/WKPreviewActionItem.h>
    {
        @Abstract: 信息類-被動(dòng)獲取: 就是預(yù)覽操作的 item 對(duì)象, 內(nèi)部只包含一個(gè) item 的 identifier .
    }
    
#import <WebKit/WKPreviewActionItemIdentifiers.h>
    {
        @Abstract: 信息類-被動(dòng)獲取: 只包含了幾個(gè) PreviewActionIdentifier 類型的字符串, 應(yīng)該是從哪里能獲取一個(gè) infoDict, 這個(gè)是 key .
    }
    
#import <WebKit/WKPreviewElementInfo.h>
    {
        @Abstract: 信息類-被動(dòng)獲取: 預(yù)覽元素信息, 其實(shí)只包含了預(yù)覽元素的 url
    }
    
#import <WebKit/WKProcessPool.h>
    {
        @Abstract: 進(jìn)程池對(duì)象, 內(nèi)部無(wú)任何數(shù)據(jù)函數(shù), 但是因?yàn)樯婕暗骄W(wǎng)頁(yè)內(nèi)容進(jìn)程, 對(duì)于內(nèi)存管理 以及 多控件的網(wǎng)頁(yè)加載機(jī)制, 應(yīng)該是有可以推敲的地方.
    }
    
#import <WebKit/WKScriptMessage.h>
    {
        @Abstract: 信息類-被動(dòng)獲取: 只是有關(guān)網(wǎng)頁(yè)發(fā)出的腳本消息的相關(guān)信息
        
        @Classfy:
        * 主要可讀信息為: 信息體. 腳本框架信息. 消息發(fā)送對(duì)象的名稱. 發(fā)出消息的網(wǎng)頁(yè)對(duì)象.
    }
    
#import <WebKit/WKScriptMessageHandler.h>
    {
        @Abstract: 函數(shù)類-代理被動(dòng)監(jiān)聽: 只有一個(gè)代理協(xié)議, 用來(lái)監(jiān)聽 JS 消息運(yùn)行/
    }
    
#import <WebKit/WKSecurityOrigin.h>
    {
        @Abstract: 信息類-被動(dòng)獲取, 本質(zhì)就是一個(gè)安全的源地址的信息, 內(nèi)部主要是三個(gè)屬性: 協(xié)議, 主機(jī)地址, 端口號(hào)
    }
    
#import <WebKit/WKURLSchemeHandler.h>
    {
        @Abstract: 內(nèi)部只有一份協(xié)議, 協(xié)議中函數(shù)能監(jiān)聽 webview 開始加載, 以及 停止加載 UrlSchemeTask .
        
        @Classfy: 函數(shù)中有兩個(gè)參數(shù): 調(diào)用的 webView 以及執(zhí)行的 URLSchemeTask 對(duì)象.
    }
    
#import <WebKit/WKURLSchemeTask.h>
    {
        @Abstract: 內(nèi)部只有一份協(xié)議, 協(xié)議中暴露了 task 對(duì)象的 Request, 同時(shí), 還有幾個(gè)不同狀態(tài)的監(jiān)聽函數(shù).
            * 使用方式: 其實(shí)是將 Task 對(duì)象作為了一個(gè)小的功能模塊對(duì)象.
        
        @Classfy:
        * 1.接收響應(yīng)header 2.拼接數(shù)據(jù) 3.完成 4.失敗
    }
    
#import <WebKit/WKUserContentController.h>
    {
        @Abstract: 不太明了 Controller 的含義, 主要管理了有關(guān)頁(yè)面內(nèi)的三個(gè)主要對(duì)象 1.UserScript 2.ScriptMessageHandler 3.ContentRule , 包括了這些對(duì)象的增加以及刪除函數(shù). 類似于一個(gè)管理類.
    }
    
#import <WebKit/WKUserScript.h>
    {
        @Abstract: 數(shù)據(jù)對(duì)象: 主要含有 1. JS 代碼 2. JS 注入時(shí)機(jī)枚舉 3. JS 注入的框架是否為全局的 此外, 就只有一個(gè)初始化函數(shù), 并且只能在初始化函數(shù)中設(shè)置以上屬性, 其他時(shí)候?qū)傩詾橹蛔x.
    }
    
#import <WebKit/WKWebsiteDataRecord.h>
    {
        @Abstract: 根據(jù)網(wǎng)址 ( DomainName ) 創(chuàng)建的數(shù)據(jù)存儲(chǔ)對(duì)象, 對(duì)象的主要元素有兩個(gè), 1. 記錄的名稱( displayName ) 2. 存儲(chǔ)數(shù)據(jù)的集合 , 集合中的字符串應(yīng)該是 URL 數(shù)據(jù), 文件中定義了多個(gè)字符串 key
    }
    
#import <WebKit/WKWebsiteDataStore.h>
    {
        @Abstract: 主要作用是管理一個(gè)網(wǎng)站的數(shù)據(jù)對(duì)象( Record ), 可以進(jìn)行查找以及刪除操作, 與 WKWebsiteDataRecord 相關(guān)聯(lián), 因?yàn)椴僮鞯膶?duì)象就是 WKWebsiteDataRecord 對(duì)象的集合, 如果不希望 webview 存儲(chǔ)數(shù)據(jù), 設(shè)置 Store 的不保存臨時(shí)數(shù)據(jù)即可.
    }
    
#import <WebKit/WKWindowFeatures.h>
    {
        @Abstract: 信息類-被動(dòng)獲取, 能獲取關(guān)于窗口特色設(shè)置的信息, 即 WindowFeature , 實(shí)際上是 ContainingWiondow 的屬性.
        @Classfy: 可獲取的主要是: 坐標(biāo) x. y. width. height. 以及 菜單條. 狀態(tài)條. 工具條. 是否可見
    }
    
#import <WebKit/WebKitLegacy.h>
    {
        @Abstract: 不明所以的文件, 導(dǎo)入了 //#import <WebKitLegacy/WebKit.h> 文件 kit 遺產(chǎn)?
    }
    
#import <WebKit/WKWebView.h>
    {
        @Abstract: 是整個(gè) WK 框架的核心, 圍繞著加載網(wǎng)頁(yè), 衍生出了很多分支功能.
        
        @Classfy: 脈絡(luò)
        
        * WKWebViewConfiguration: 網(wǎng)頁(yè)本身的屬性控制
        * WKNavigationDelegate: 跳轉(zhuǎn)控制相關(guān)
        * WKUIDelegate: 用戶交互相關(guān)
        * BackForwardList:
    }
    
#import <WebKit/WKUIDelegate.h>
    {
        @Abstract: 分擔(dān)了一部分 WebView 的主動(dòng)功能, 屬于主動(dòng)部分
    }
    
#import <WebKit/WKWebViewConfiguration.h>
    {
        @Abstract: 主要是分擔(dān)了 WebView 的頁(yè)面設(shè)置的部分, 相對(duì)來(lái)說(shuō), 屬于被動(dòng)部分
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末暂氯,一起剝皮案震驚了整個(gè)濱河市娘扩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌险胰,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異或链,居然都是意外死亡报咳,警方通過(guò)查閱死者的電腦和手機(jī)吊宋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)讼溺,“玉大人令宿,你說(shuō)我怎么就攤上這事叼耙。” “怎么了粒没?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵筛婉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)爽撒,這世上最難降的妖魔是什么入蛆? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮硕勿,結(jié)果婚禮上哨毁,老公的妹妹穿的比我還像新娘。我一直安慰自己源武,他們只是感情好扼褪,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粱栖,像睡著了一般话浇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上查排,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天凳枝,我揣著相機(jī)與錄音,去河邊找鬼跋核。 笑死岖瑰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的砂代。 我是一名探鬼主播蹋订,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刻伊!你這毒婦竟也來(lái)了露戒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捶箱,失蹤者是張志新(化名)和其女友劉穎智什,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丁屎,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荠锭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晨川。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片证九。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖共虑,靈堂內(nèi)的尸體忽然破棺而出愧怜,到底是詐尸還是另有隱情,我是刑警寧澤妈拌,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布拥坛,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏渴逻。R本人自食惡果不足惜疾党,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惨奕。 院中可真熱鬧雪位,春花似錦、人聲如沸梨撞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)卧波。三九已至时肿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間港粱,已是汗流浹背螃成。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留查坪,地道東北人寸宏。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像偿曙,于是被迫代替她去往敵國(guó)和親氮凝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345