当前位置:编程学习 > 网站相关 >>

[WebKit]WebKit2 API解析

API概览
主要类图
 
WebKit提供了灵活的回调机制用来支持客户端与内核的交互,在API中有一些Set Client类的函数,Client一般就是用于注册针对某一功能的回调函数。
如向WKContext注册history item处理的回调函数,就会使用下面这个结构(WKContext.h):
struct WKContextHistoryClient {
    int                                                                version;
    const void *                                                        clientInfo;
    WKContextDidNavigateWithNavigationDataCallback       didNavigateWithNavigationData;
    WKContextDidPerformClientRedirectCallback                   didPerformClientRedirect;
    WKContextDidPerformServerRedirectCallback                  didPerformServerRedirect;
    WKContextDidUpdateHistoryTitleCallback                        didUpdateHistoryTitle;
    WKContextPopulateVisitedLinksCallback                          populateVisitedLinks;
};
typedef struct WKContextHistoryClient WKContextHistoryClient;
调用WKContextSetHistoryClient就可以完成注册特定的回调函数。
 
角色与功能
WKView
(浏览视图,浏览功能的主要入口,也是网页显示与系统平台上的视图控件的适配,平台差异比较大。)
主要用于创建一个浏览界面,整合WKContext, WKPageGroup,WKPage的功能, 平台视图基本功能的适配(绘制、事件响应等)。
如在Mac OS下就是要实现对于NSView的适配。
 
WKPage
(当前浏览的页面, 负责解析执行页面内容)
 -> Frame Loader Client
 -> Page Loader Client
 -> Policy Client
 -> Form Client (表单提交操作的响应)
 -> UI Client (JS提示框、焦点变化、菜单显示状态变化、页面绘制功能等)
 -> Find Client (页面上的搜索)
 -> Context Menu Client(快捷菜单)
 -> 页面基本操作 (加载、刷新、关闭、前进、后退等)
 -> User Agent管理
 -> 页面缩放
 -> 与Injected Bundle交互
 
WKContext
(浏览内容管理功能)
  -> History Client
  -> Injected Bundle Client
  -> Download Client
  -> Connection Client
  -> Download Request
  -> Cached Mode
  -> Process Model (Web进程的共享模式)
  -> Memory Sampler
通过它的m_supplements成员(一个HashMap)可以提供:
  -> Get Application Cache manager
  -> Get Battery Manager
  -> Get Cookie Manager
  -> Get Database Manager
  -> Get Geolocation Manager
  -> Get Icon Database
  -> Get KeyValue Storage Manager
  -> Get Media Cache Manager
  -> Get Network Info Manager
  -> Get Notification Manager
  -> Get Plugin Site Data Manager
  -> Get Resource Cache Manager
  -> Garbage Collection of JavaScript Objects
补充:Web开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,