Appearance
API
使用工具从 MB API 文档 导入,内容完全相同
mbInit
void mbInit(const mbSettings* settings)
初始化,mbSettings定义为:
cpp
typedef enum {
MB_PROXY_NONE,
MB_PROXY_HTTP,
MB_PROXY_SOCKS4,
MB_PROXY_SOCKS4A,
MB_PROXY_SOCKS5,
MB_PROXY_SOCKS5HOSTNAME
} mbProxyType;
typedef struct {
mbProxyType type;
char hostname[100];
unsigned short port;
char username[50];
char password[50];
} mbProxy;
typedef void(MB_CALL_TYPE* mbOnBlinkThreadInitCallback)(void* param);
typedef struct _mbSettings {
mbProxy proxy;
unsigned int mask; // 208 offset
mbOnBlinkThreadInitCallback blinkThreadInitCallback;
void* blinkThreadInitCallbackParam;
intptr_t version;
const wchar_t* mainDllPath;
HMODULE mainDllHandle;
} mbSettings;
mbUninit
void mbUninit()
反初始化,执行一些清理操作。
mbCreateInitSettings
mbSettings* mbCreateInitSettings()
创建一个设置项。
mbSetInitSettings
void mbSetInitSettings(mbSettings* settings, const char* name, const char* value)
初始化设置。
mbCreateWebView
mbWebView mbCreateWebView()
创建一个webview,但不创建真窗口。一般用在离屏渲染里,如游戏。
mbDestroyWebView
void mbDestroyWebView(mbWebView)
销毁指定的WebView。mbWebView可以理解为指定WebView的句柄或指针,下同。
mbCreateWebWindow
mbWebView mbCreateWebWindow(mbWindowType type, HWND parent, int x, int y, int width, int height)
创建一个带真实窗口的mbWebView。
type:WKE_WINDOW_TYPE_POPUP,普通窗口;
WKE_WINDOW_TYPE_TRANSPARENT,透明窗口,mb内部通过layer window实现;
WKE_WINDOW_TYPE_CONTROL,嵌入在父窗口里的子窗口,此时parent需要被设置。
mbCreateWebCustomWindow
mbWebView mbCreateWebCustomWindow(HWND parent, DWORD style, DWORD styleEx, int x, int y, int width, int height)
创建一个子窗口。
mbMoveToCenter
void mbMoveToCenter(mbWebView webview)
窗口在父窗口或屏幕里居中。
mbSetAutoDrawToHwnd
void mbSetAutoDrawToHwnd(mbWebView webview, BOOL b)
离屏模式下控制是否自动上屏。
mbCreateString
mbStringPtr mbCreateString(const utf8* str, size_t length)
【可跨线程】创建mbString结构体。mbStringPtr定义如下:
cpp
struct mbString;
typedef mbString* mbStringPtr;
mbCreateStringWithoutNullTermination
mbStringPtr mbCreateStringWithoutNullTermination(const utf8* str, size_t length)
【可跨线程】创建mbString结构体。
mbDeleteString
void mbDeleteString(mbStringPtr str)
【可跨线程】删除mbString结构体。
mbGetStringLen
size_t mbGetStringLen(mbStringPtr str)
【可跨线程】获取mbString结构体长度。
mbGetString
const utf8* mbGetString(mbStringPtr str)
获取mbString结构体。
mbSetProxy
void mbSetProxy(mbWebView webView, const mbProxy* proxy)
设置指定webView的代理,每个webView单独生效。
cpp
typedef enum {
MB_PROXY_NONE,
MB_PROXY_HTTP,
MB_PROXY_SOCKS4,
MB_PROXY_SOCKS4A,
MB_PROXY_SOCKS5,
MB_PROXY_SOCKS5HOSTNAME
} mbProxyType;
typedef struct {
mbProxyType type;
char hostname[100];
unsigned short port;
char username[50];
char password[50];
} mbProxy;
mbSetDebugConfig
void mbSetDebugConfig(mbWebView webView, const char* debugString, const char* param)
设置一些实验性选项。debugString可用参数有:
showDevTools:开启开发者工具,此时param要填写开发者工具的资源路径,如file:///c:/miniblink-release/front_end/inspector.html,路径中不能有中文,并且必须为完整路径。
wakeMinInterval:设置帧率,默认值是10,值越大帧率越低。
drawMinInterval:设置帧率,默认值是3,值越大帧率越低。
antiAlias:设置抗锯齿渲染,param必须设置为“1”。
minimumFontSize:最小字体。
minimumLogicalFontSize:最小逻辑字体。
defaultFontSize:默认字号。
defaultFixedFontSize:默认Fixed字号。
imageEnable:是否打开无图模式,param为“0”表示开启无图模式。
jsEnable:是否禁用js,param为“0”表示禁用。
mbNetSetData
void mbNetSetData(mbNetJob jobPtr, void* buf, int len)
此接口一般在mbOnLoadUrlBegin接口回调mbLoadUrlBeginCallback中使用(涉及mbNetJob jobPtr参数的接口基本都是,下同),在网络访问执行前,设置指定的数据到网络层,数据内容可以为js代码,图片,字符串,数据块等任意类型,设置此接口后会触发OnLoadUrlEnd事件。
jobPtr为网络任务id,通常由MB回传给mbLoadUrlBeginCallback,只在当次网络任务中有效,下同。
TIP
注意:此接口是在网络访问前设置数据,此接口对性能影响较大,慎用。
mbNetHookRequest
void mbNetHookRequest(mbNetJob jobPtr)
拦截某次网络请求,此接口会在接受到真正网络数据后触发OnLoadUrlEnd事件,你可以在mbLoadUrlEndCallback中修改接收到的数据。
TIP
注意:此接口是在接收到实际的网络数据后进行拦截,而mbNetSetData是在数据尚未发送前进行插入。
mbNetChangeRequestUrl
void mbNetChangeRequestUrl(mbNetJob jobPtr, const char* url)
【可跨线程】修改某次网络请求的URL。
mbNetContinueJob
void mbNetContinueJob(mbNetJob jobPtr)
继续某次异步网络请求,参考mbNetHoldJobToAsynCommit。
mbNetGetRawHttpHeadInBlinkThread
const mbSlist* mbNetGetRawHttpHeadInBlinkThread(mbNetJob jobPtr)
获取渲染线程中curl原始请求数据头。mbSlist是一个链表结构,具体定义为:
cpp
typedef struct _mbSlist {
char* data;
struct _mbSlist* next;
} mbSlist;
mbNetGetRawResponseHeadInBlinkThread
const mbSlist* mbNetGetRawResponseHeadInBlinkThread(mbNetJob jobPtr)
获取渲染线程中的原始响应数据头。
mbNetHoldJobToAsynCommit
void mbNetHoldJobToAsynCommit(mbNetJob jobPtr)
当在mbOnLoadUrlBegin中里拦截到一个请求后需要进行一些耗时操作时,可以调用本接口,耗时操作完成后需要调用mbNetContinueJob接口以通知MB让此次请求继续进行。
TIP
注意:返回true代表成功,false代表调用失败,如失败则不能再调用mbNetContinueJob。
mbNetCancelRequest
void mbNetCancelRequest(mbNetJob jobPtr)
取消某次网络请求。
mbNetOnResponse
void mbNetOnResponse(mbWebView webviewHandle, mbNetResponseCallback callback, void* param)
收到服务器Response时触发此回调,param可以为自定义参数,MB会直接传给回给回调参数(下同)。mbNetResponseCallback定义为:
cpp
typedef BOOL(MB_CALL_TYPE *mbNetResponseCallback)(mbWebView webView, void* param, const utf8* url, mbNetJob job);
TIP
注意:此接口的回调是在另外个线程中进行。
mbNetSetWebsocketCallback
void mbNetSetWebsocketCallback(mbWebView webview, const mbWebsocketHookCallbacks* callbacks, void* param)
建立WebSocket时触发此回调,mbWebsocketHookCallbacks定义为:
cpp
struct mbString;
typedef mbString* mbStringPtr;
typedef void* mbWebSocketChannel;
typedef struct _mbWebsocketHookCallbacks {
mbStringPtr (MB_CALL_TYPE* onWillConnect)(mbWebView webView, void* param, mbWebSocketChannel channel, const utf8* url, BOOL* needHook);
BOOL (MB_CALL_TYPE* onConnected)(mbWebView webView, void* param, mbWebSocketChannel channel);
mbStringPtr (MB_CALL_TYPE* onReceive)(mbWebView webView, void* param, mbWebSocketChannel channel, int opCode, const char* buf, size_t len, BOOL* isContinue);
mbStringPtr (MB_CALL_TYPE* onSend)(mbWebView webView, void* param, mbWebSocketChannel channel, int opCode, const char* buf, size_t len, BOOL* isContinue);
void (MB_CALL_TYPE* onError)(mbWebView webView, void* param, mbWebSocketChannel channel);
} mbWebsocketHookCallbacks;
mbNetSendWsText
void mbNetSendWsText(mbWebSocketChannel channel, const char* buf, size_t len)
设置套接字内容。
mbNetSendWsBlob
void mbNetSendWsBlob(mbWebSocketChannel channel, const char* buf, size_t len)
设置套接字Blob对象。
mbNetEnableResPacket
void mbNetEnableResPacket(mbWebView webviewHandle, const WCHAR* pathName)
是否允许以res://方式读取打包后的资源文件。
mbNetGetPostBody
mbPostBodyElements* mbNetGetPostBody(mbNetJob jobPtr)
获取此请求中的post数据。mbPostBodyElements定义为:
cpp
typedef struct _mbPostBodyElement {
int size;
mbHttBodyElementType type;
mbMemBuf* data;
mbStringPtr filePath;
__int64 fileStart;
__int64 fileLength; // -1 means to the end of the file.
} mbPostBodyElement;
typedef struct _mbPostBodyElements {
int size;
mbPostBodyElement** element;
size_t elementSize;
bool isDirty;
} mbPostBodyElements;
TIP
注意:只有当请求类型是post时才有效果。
mbNetCreatePostBodyElements
mbPostBodyElements* mbNetCreatePostBodyElements(mbWebView webView, size_t length)
创建一个新的post数据包。
TIP
注意:必须是post请求才能设置。
mbNetFreePostBodyElements
void mbNetFreePostBodyElements(mbPostBodyElements* elements)
销毁post数据包。
mbNetCreatePostBodyElement
mbPostBodyElement* mbNetCreatePostBodyElement(mbWebView webView)
创建post数据。
mbNetFreePostBodyElement
void mbNetFreePostBodyElement(mbPostBodyElement* element)
【可跨线程】销毁post数据。
mbNetCreateWebUrlRequest
mbWebUrlRequestPtr mbNetCreateWebUrlRequest(const utf8* url, const utf8* method, const utf8* mime)
【可跨线程】创建一个网络请求。mbWebUrlRequestPtr定义为:
cpp
typedef struct mbWebUrlRequest* mbWebUrlRequestPtr;
mbNetAddHTTPHeaderFieldToUrlRequest
void mbNetAddHTTPHeaderFieldToUrlRequest(mbWebUrlRequestPtr request, const utf8* name, const utf8* value)
【可跨线程】在指定网络请求里添加请求头。
mbNetStartUrlRequest
int mbNetStartUrlRequest(mbWebView webView, mbWebUrlRequestPtr request, void* param, const mbUrlRequestCallbacks* callbacks)
【可跨线程】开始指定的网络请求。mbUrlRequestCallbacks定义为:
cpp
typedef struct mbWebUrlRequest* mbWebUrlRequestPtr;
typedef struct mbWebUrlResponse* mbWebUrlResponsePtr;
typedef void(MB_CALL_TYPE* mbOnUrlRequestWillRedirectCallback)(mbWebView webView, void* param, mbWebUrlRequestPtr oldRequest, mbWebUrlRequestPtr request, mbWebUrlResponsePtr redirectResponse);
typedef void(MB_CALL_TYPE* mbOnUrlRequestDidReceiveResponseCallback)(mbWebView webView, void* param, mbWebUrlRequestPtr request, mbWebUrlResponsePtr response);
typedef void(MB_CALL_TYPE* mbOnUrlRequestDidReceiveDataCallback)(mbWebView webView, void* param, mbWebUrlRequestPtr request, const char* data, int dataLength);
typedef void(MB_CALL_TYPE* mbOnUrlRequestDidFailCallback)(mbWebView webView, void* param, mbWebUrlRequestPtr request, const utf8* error);
typedef void(MB_CALL_TYPE* mbOnUrlRequestDidFinishLoadingCallback)(mbWebView webView, void* param, mbWebUrlRequestPtr request, double finishTime);
typedef struct _mbUrlRequestCallbacks {
mbOnUrlRequestWillRedirectCallback willRedirectCallback;
mbOnUrlRequestDidReceiveResponseCallback didReceiveResponseCallback;
mbOnUrlRequestDidReceiveDataCallback didReceiveDataCallback;
mbOnUrlRequestDidFailCallback didFailCallback;
mbOnUrlRequestDidFinishLoadingCallback didFinishLoadingCallback;
} mbUrlRequestCallbacks;
mbNetGetHttpStatusCode
int mbNetGetHttpStatusCode(mbWebUrlResponsePtr response)
获取请求响应码。
mbNetGetRequestMethod
mbRequestType mbNetGetRequestMethod(mbNetJob jobPtr)
获取此请求的method,mbRequestType定义如下:
cpp
typedef enum _mbRequestType {
kMbRequestTypeInvalidation,
kMbRequestTypeGet,
kMbRequestTypePost,
kMbRequestTypePut,
} mbRequestType;
mbNetGetExpectedContentLength
__int64 mbNetGetExpectedContentLength(mbWebUrlResponsePtr response)
获取响应内容长度。
mbNetGetResponseUrl
const utf8* mbNetGetResponseUrl(mbWebUrlResponsePtr response)
获取响应URL。
mbNetCancelWebUrlRequest
void mbNetCancelWebUrlRequest(int requestId)
【可跨线程】取消指定的网络请求。
mbSetViewProxy
void mbSetViewProxy(mbWebView webView, const mbProxy* proxy)
设置指定webView的代理,每个webView单独生效,mbProxy定义为:
cpp
typedef enum {
MB_PROXY_NONE,
MB_PROXY_HTTP,
MB_PROXY_SOCKS4,
MB_PROXY_SOCKS4A,
MB_PROXY_SOCKS5,
MB_PROXY_SOCKS5HOSTNAME
} mbProxyType;
typedef struct {
mbProxyType type;
char hostname[100];
unsigned short port;
char username[50];
char password[50];
} mbProxy;
mbNetSetMIMEType
void mbNetSetMIMEType(mbNetJob jobPtr, const char* type)
设置http请求的MIME类型。
mbNetGetMIMEType
const char* mbNetGetMIMEType(mbNetJob jobPtr)
获取http请求的MIME类型。
mbNetGetHTTPHeaderField
const utf8* mbNetGetHTTPHeaderField(mbNetJob job, const char* key, BOOL fromRequestOrResponse)
获取请求头内容。fromRequestOrResponse为1表示请求,0表示响应。
mbNetSetHTTPHeaderField
void mbNetSetHTTPHeaderField(mbNetJob jobPtr, const wchar_t* key, const wchar_t* value, BOOL response)
设置http请求(或file:///协议)的http头。
TIP
注意:response需要一直设置成0。
mbSetMouseEnabled
void mbSetMouseEnabled(mbWebView webView, BOOL b)
【可跨线程】是否允许鼠标,默认允许。
mbSetTouchEnabled
void mbSetTouchEnabled(mbWebView webView, BOOL b)
【可跨线程】是否允许触屏,默认不允许,开启后,鼠标消息将自动转换成触屏消息。
mbSetSystemTouchEnabled
void mbSetSystemTouchEnabled(mbWebView webView, BOOL b)
【可跨线程】设置操作系统是否发送触屏消息,默认不允许。
mbSetContextMenuEnabled
void mbSetContextMenuEnabled(mbWebView webView, BOOL b)
【可跨线程】设置是否允许菜单,默认允许。
mbSetNavigationToNewWindowEnable
void mbSetNavigationToNewWindowEnable(mbWebView webView, BOOL b)
【可跨线程】当有新页面需要打开时(如标签),是否在新窗口打开,默认是当前窗口,如开启,则会触发mbOnCreateView回调接口。
mbSetHeadlessEnabled
void mbSetHeadlessEnabled(mbWebView webView, BOOL b)
【可跨线程】开启无头模式。开启后,将不会渲染页面,提升了网页性能,默认关闭。
mbSetDragDropEnable
void mbSetDragDropEnable(mbWebView webView, BOOL b)
【可跨线程】设置是否支持拖拽页面元素,默认开启。
mbSetDragEnable
void mbSetDragEnable(mbWebView webView, BOOL b)
【可跨线程】设置是否支持拖拽文件到页面,默认开启。
mbSetContextMenuItemShow
void mbSetContextMenuItemShow(mbWebView webView, mbMenuItemId item, BOOL isShow)
【可跨线程】设置是否在菜单中显示指定的操作。mbMenuItemId定义为:
cpp
typedef enum _mbMenuItemId {
kMbMenuSelectedAllId = 1 << 1,
kMbMenuSelectedTextId = 1 << 2,
kMbMenuUndoId = 1 << 3,
kMbMenuCopyImageId = 1 << 4,
kMbMenuInspectElementAtId = 1 << 5,
kMbMenuCutId = 1 << 6,
kMbMenuPasteId = 1 << 7,
kMbMenuPrintId = 1 << 8,
kMbMenuGoForwardId = 1 << 9,
kMbMenuGoBackId = 1 << 10,
kMbMenuReloadId = 1 << 11,
} mbMenuItemId;
mbSetHandle
void mbSetHandle(mbWebView webView, HWND wnd)
设置mbWebView对应的窗口句柄,用于无头模式,如果是mbCreateWebWindow创建的webview,已经自带窗口句柄。
mbSetHandleOffset
void mbSetHandleOffset(mbWebView webView, int x, int y)
设置无头模式下的绘制偏移,在某些情况下(主要是离屏模式),绘制的地方不在真窗口的(0,0)处,就需要手动调用此接口。
mbGetHostHWND
HWND mbGetHostHWND(mbWebView webView)
获取webveiw对应的窗口句柄。
mbSetTransparent
HWND mbSetTransparent(mbWebView webviewHandle, BOOL transparent)
页面设置为透明。
mbSetViewSettings
void mbSetViewSettings(mbWebView webviewHandle, const mbViewSettings* settings)
设置页面设置项,mbViewSettings定义为:
cpp
typedef struct _mbViewSettings {
int size;
unsigned int bgColor;
} mbViewSettings;
mbSetCspCheckEnable
void mbSetCspCheckEnable(mbWebView webView, BOOL b)
【可跨线程】是否开启跨域检查,默认开启。关闭后可以做任何跨域操作,如跨域ajax,跨域设置iframe等。
mbSetNpapiPluginsEnabled
void mbSetNpapiPluginsEnabled(mbWebView webView, BOOL b)
【可跨线程】是否允许npapi插件,如flash,ffmpeg等,默认允许。
mbSetMemoryCacheEnable
void mbSetMemoryCacheEnable(mbWebView webView, BOOL b)
【可跨线程】开启内存缓存,网页的图片等都会在内存缓存里,默认开启。
TIP
注意:尽量不要关闭,虽然关闭会降低内存使用,但容易引起一些问题。
mbSetCookie
void mbSetCookie(mbWebView webView, const utf8* url, const utf8* cookie)
【可跨线程】设置页面cookie,针对每个webView单独生效。
TIP
注意:
1、cookie必须符合curl的标准写法。如:PERSONALIZE=123;expires=Monday 13-Jun-2022 03:04:55 GMT; domain=.fidelity.com; path=/; secure。
2、Cookie可针对每个webView单独生效。
mbSetCookieEnabled
void mbSetCookieEnabled(mbWebView webView, BOOL enable)
【可跨线程】是否开启cookie,默认开启。
TIP
注意:这个接口只是设置blink,并不会设置curl,所以还是会生成curl的cookie文件。
mbSetCookieJarPath
void mbSetCookieJarPath(mbWebView webView, const WCHAR* path)
【可跨线程】设置cookie文件的目录,默认是程序运行的当前目录,文件名为:cookie.dat。
TIP
注意:path是文件目录路径,不包括文件名,文件目录必须确保存在,否则调用会失败。
mbSetCookieJarFullPath
void mbSetCookieJarFullPath(mbWebView webView, const WCHAR* path)
【可跨线程】设置cookie文件的全路径,默认是程序运行的当前目录,默认文件名为cookie.dat。
TIP
注意:是全路径,包括cookie文件名,文件必须确保存在,否则调用会失败。
mbSetLocalStorageFullPath
void mbSetLocalStorageFullPath(mbWebView webView, const WCHAR* path)
【可跨线程】设置localStorage的完整路径,针对每个webView单独生效。
TIP
注意:
1、localStorage可针对每个webView单独生效。
2、全路径,文件夹必须确保存在,否则调用会失败。
mbGetTitle
const utf8* mbGetTitle(mbWebView webView)
获取页面标题,建议使用mbOnTitleChanged获取更可靠。
mbGetUrl
const utf8* mbGetUrl(mbWebView webView)
获取页面URL,建议使用mbOnURLChanged获取更可靠。
mbAddPluginDirectory
void mbAddPluginDirectory(mbWebView webView, const WCHAR* path)
添加插件目录。
mbSetUserAgent
void mbSetUserAgent(mbWebView webView, const utf8* userAgent)
设置webview的UA,全局生效。
TIP
注意:目前是全局生效的,未来会支持每个webView单独生效。
mbSetZoomFactor
void mbSetZoomFactor(mbWebView webView, float factor)
设置页面缩放系数,默认是1。
mbGetZoomFactor
float mbGetZoomFactor(mbWebView webView)
获取页面缩放系数。
mbEnableHighDPISupport
void mbEnableHighDPISupport()
【可跨线程】开启高分屏支持。
TIP
注意:这个接口内部是通过设置ZOOM,并且关闭系统默认放大来实现。所以再使用mbGetZoomFactor接口会发现值可能不为1。
mbSetDiskCacheEnabled
void mbSetDiskCacheEnabled(mbWebView webView, BOOL enable)
【可跨线程】是否开启本地磁盘缓存,默认开启。
TIP
注意:这个接口是全局的,暂不支持单独设置webView。
mbSetDiskCachePath
void mbSetDiskCachePath(mbWebView webView, const WCHAR* path)
【可跨线程】设置磁盘缓存目录。
mbSetDiskCacheLimit
void mbSetDiskCacheLimit(mbWebView webView, size_t limit)
【可跨线程】设置磁盘缓存大小限制。
mbSetDiskCacheLimitDisk
void mbSetDiskCacheLimitDisk(mbWebView webView, size_t limit)
【可跨线程】设置磁盘缓存在单一硬盘上大小限制。
mbSetDiskCacheLevel
void mbSetDiskCacheLevel(mbWebView webView, int Level)
【可跨线程】设置磁盘缓存等级。
mbSetResourceGc
void mbSetResourceGc(mbWebView webView, int intervalSec)
设置资源回收时间间隔,默认300秒。
mbCanGoForward
void mbCanGoForward(mbWebView webView, mbCanGoBackForwardCallback callback, void* param)
页面是否可以前进。
mbCanGoBack
void mbCanGoBack(mbWebView webView, mbCanGoBackForwardCallback callback, void* param)
页面是否可以后退。
mbGetCookie
void mbGetCookie(mbWebView webView, mbGetCookieCallback callback, void* param)
获取指定页面的cookie,结果需要在mbGetCookieCallback中获取,mbGetCookieCallback定义为:
cpp
enum MbAsynRequestState {
kMbAsynRequestStateOk = 0,
kMbAsynRequestStateFail = 1,
};
typedef void(MB_CALL_TYPE* mbGetCookieCallback)(mbWebView webView, void* param, MbAsynRequestState state, const utf8* cookie);
mbGetCookieOnBlinkThread
const utf8* mbGetCookieOnBlinkThread(mbWebView webView)
获取Blink线程上的cookie。
mbClearCookie
void mbClearCookie(mbWebView webView)
【可跨线程】清除指定webView的cookie。
mbResize
void mbResize(mbWebView webView, int w, int h)
重新设置页面的宽高。如果webView是带窗口模式的,会设置实际窗口的宽高。
mbOnNavigation
void mbOnNavigation(mbWebView webView, mbNavigationCallback callback, void* param)
导航到新页面时会触发此回调,param可以为自定义参数,MB会直接传给回给回调参数(下同),mbNavigationCallback定义为:
cpp
typedef enum {
MB_NAVIGATION_TYPE_LINKCLICK,
MB_NAVIGATION_TYPE_FORMSUBMITTE,
MB_NAVIGATION_TYPE_BACKFORWARD,
MB_NAVIGATION_TYPE_RELOAD,
MB_NAVIGATION_TYPE_FORMRESUBMITT,
MB_NAVIGATION_TYPE_OTHER
} mbNavigationType;
typedef BOOL(MB_CALL_TYPE *mbNavigationCallback)(mbWebView webView, void* param, mbNavigationType navigationType, const utf8* url);
mbOnNavigationSync
void mbOnNavigationSync(mbWebView webView, mbNavigationCallback callback, void* param)
导航到新页面时会触发此回调(异步)。
mbOnCreateView
void mbOnCreateView(mbWebView webView, mbCreateViewCallback callback, void* param)
创建新窗口时将触发回调(window.open等),mbCreateViewCallback定义为:
cpp
typedef enum {
MB_NAVIGATION_TYPE_LINKCLICK,
MB_NAVIGATION_TYPE_FORMSUBMITTE,
MB_NAVIGATION_TYPE_BACKFORWARD,
MB_NAVIGATION_TYPE_RELOAD,
MB_NAVIGATION_TYPE_FORMRESUBMITT,
MB_NAVIGATION_TYPE_OTHER
} mbNavigationType;
typedef struct {
int x;
int y;
int width;
int height;
BOOL menuBarVisible;
BOOL statusBarVisible;
BOOL toolBarVisible;
BOOL locationBarVisible;
BOOL scrollbarsVisible;
BOOL resizable;
BOOL fullscreen;
} mbWindowFeatures;
typedef mbWebView(MB_CALL_TYPE *mbCreateViewCallback)(mbWebView webView, void* param, mbNavigationType navigationType, const utf8* url, const mbWindowFeatures* windowFeatures);
TIP
注意:window.open等代码需要指定完整的网页URL(带http),如:https://www.miniblink.net,否则MB会认为这是文件路径而自动拼接了当前目录。
mbOnDocumentReady
void mbOnDocumentReady(mbWebView webView, mbDocumentReadyCallback callback, void* param)
页面DOM发出ready事件时触发此回调,mbDocumentReadyCallback定义为:
cpp
typedef void* mbWebFrameHandle;
typedef void(MB_CALL_TYPE *mbDocumentReadyCallback)(mbWebView webView, void* param, mbWebFrameHandle frameId);
TIP
注意:由于现在网页多采用异步加载模式,Document数据结构生成完成 ≠ 网页加载完成,每个异步执行的加载动作完成时都可能会触发一次本回调,注意是可能,不是一定,另外页面中如有多个frame,每个frame加载完成时都会触发一次本回调,实践中可以采用mbOnLoadingFinish接口,mbOnTitleChanged接口,mbOnURLChanged接口,以及检查页面中某个元素(如网站logo等)是否存在等方法来综合判断页面加载是否完成。
mbOnPaintUpdated
void mbOnPaintUpdated(mbWebView webView, mbPaintUpdatedCallback callback, void* callbackParam)
页面有任何需要刷新的地方将触发此回调,mbPaintUpdatedCallback定义为:
cpp
typedef void(MB_CALL_TYPE *mbPaintUpdatedCallback)(mbWebView webView, void* param, const HDC hdc, int x, int y, int cx, int cy);
mbOnPaintBitUpdated
void mbOnPaintBitUpdated(mbWebView webView, mbPaintBitUpdatedCallback callback, void* callbackParam)
功能同mbOnPaintUpdated,不同的是回调过来的是填充好像素的buffer,而不是DC。方便嵌入到游戏中做离屏渲染,mbPaintBitUpdatedCallback定义为:
cpp
typedef struct _mbRect {
int x;
int y;
int w;
int h;
} mbRect;
typedef void(MB_CALL_TYPE *mbPaintBitUpdatedCallback)(mbWebView webView, void* param, const void* buffer, const mbRect* r, int width, int height);
mbOnLoadUrlBegin
void mbOnLoadUrlBegin(mbWebView webView, mbLoadUrlBeginCallback callback, void* callbackParam)
任何网络请求发起前会触发此回调,如果mbLoadUrlBeginCallback返回true,则表示取消本次请求,mbLoadUrlBeginCallback定义为:
cpp
typedef BOOL(MB_CALL_TYPE *mbLoadUrlBeginCallback)(mbWebView webView, void* param, const char* url, void* job);
TIP
注意:此接口是在另外的线程执行,请自行同步数据。
mbOnLoadUrlEnd
void mbOnLoadUrlEnd(mbWebView webView, mbLoadUrlEndCallback callback, void* callbackParam)
网络请求结束时会触发此回调,只有设置了mbNetSetData或mbNetHookRequest才会触发该接口,mbLoadUrlEndCallback定义为:
cpp
typedef void(MB_CALL_TYPE *mbLoadUrlEndCallback)(mbWebView webView, void* param, const char* url, void* job, void* buf, int len);
mbOnLoadUrlFail
void mbOnLoadUrlFail(mbWebView webView, mbLoadUrlFailCallback callback, void* callbackParam)
页面加载失败时触发此回调,mbLoadUrlFailCallback定义为:
cpp
typedef void(MB_CALL_TYPE *mbLoadUrlFailCallback)(mbWebView webView, void* param, const char* url, void* job);
mbOnTitleChanged
void mbOnTitleChanged(mbWebView webView, mbTitleChangedCallback callback, void* callbackParam)
页面标题变化时触发此回调,mbTitleChangedCallback定义为:
cpp
typedef void(MB_CALL_TYPE *mbTitleChangedCallback)(mbWebView webView, void* param, const utf8* title);
mbOnURLChanged
void mbOnURLChanged(mbWebView webView, mbURLChangedCallback callback, void* callbackParam)
页面URL改变时触发此回调,mbURLChangedCallback定义为:
cpp
typedef void(MB_CALL_TYPE *mbURLChangedCallback)(mbWebView webView, void* param, const utf8* url, BOOL canGoBack, BOOL canGoForward);
mbOnLoadingFinish
void mbOnLoadingFinish(mbWebView webView, mbLoadingFinishCallback callback, void* param)
页面加载完成时触发此回调,mbLoadingFinishCallback定义为:
cpp
typedef void* mbWebFrameHandle;
typedef enum {
MB_LOADING_SUCCEEDED,
MB_LOADING_FAILED,
MB_LOADING_CANCELED
} mbLoadingResult;
typedef void(MB_CALL_TYPE *mbLoadingFinishCallback)(mbWebView webView, void* param, mbWebFrameHandle frameId, const utf8* url, mbLoadingResult result, const utf8* failedReason);
TIP
注意:由于异步或多frame等原因,此接口不能保证网页一定加载完成,实践中可以采用mbOnDocumentReady接口,mbOnTitleChanged接口,mbOnURLChanged接口,以及检查页面中某个元素(如网站logo等)是否存在等方法来综合判断页面加载是否完成。
mbOnDownload
void mbOnDownload(mbWebView webView, mbDownloadCallback callback, void* param)
下载时触发此回调,mbDownloadCallback定义为:
cpp
typedef void* mbWebFrameHandle;
typedef BOOL(MB_CALL_TYPE *mbDownloadCallback)(mbWebView webView, void* param, mbWebFrameHandle frameId, const char* url, void* downloadJob);
TIP
注意:此接口尚未完善,回调中暂时只返回了下载URL,未带有身份认证信息,所以只适用于不需要身份认证的下载请求。
mbOnDownloadInBlinkThread
void mbOnDownloadInBlinkThread(mbWebView webView, mbDownloadInBlinkThreadCallback callback, void* param)
下载时触发此回调,但回调是在另外的线程中。可在回调中调用mbPopupDialogAndDownload接口,这样能弹出文件另存框,并自动开始下载,mbDownloadInBlinkThreadCallback定义为:
cpp
typedef void* mbNetJob;
typedef void(MB_CALL_TYPE*mbNetJobDataRecvCallback)(void* ptr, mbNetJob job, const char* data, int length);
typedef void(MB_CALL_TYPE*mbNetJobDataFinishCallback)(void* ptr, mbNetJob job, mbLoadingResult result);
typedef struct _mbNetJobDataBind {
void* param;
mbNetJobDataRecvCallback recvCallback;
mbNetJobDataFinishCallback finishCallback;
} mbNetJobDataBind;
typedef mbDownloadOpt(MB_CALL_TYPE*mbDownloadInBlinkThreadCallback)(
mbWebView webView,
void* param,
size_t expectedContentLength,
const char* url,
const char* mime,
const char* disposition,
mbNetJob job,
mbNetJobDataBind* dataBind
);
mbOnAlertBox
void mbOnAlertBox(mbWebView webView, mbAlertBoxCallback callback, void* param)
网页调用alert时会触发此回调,mbAlertBoxCallback定义为:
cpp
typedef void(MB_CALL_TYPE *mbAlertBoxCallback)(mbWebView webView, void* param, const utf8* msg);
mbOnConfirmBox
void mbOnConfirmBox(mbWebView webView, mbConfirmBoxCallback callback, void* param)
网页调用Confirm时会触发此回调,mbConfirmBoxCallback定义为:
cpp
typedef BOOL(MB_CALL_TYPE *mbConfirmBoxCallback)(mbWebView webView, void* param, const utf8* msg);
mbOnPromptBox
void mbOnPromptBox(mbWebView webView, mbPromptBoxCallback callback, void* param)
网页调用Prompt时会触发此回调,mbPromptBoxCallback定义为:
cpp
struct mbString;
typedef mbString* mbStringPtr;
typedef mbStringPtr(MB_CALL_TYPE *mbPromptBoxCallback)(mbWebView webView, void* param, const utf8* msg, const utf8* defaultResult);
mbOnNetGetFavicon
void mbOnNetGetFavicon(mbWebView webView, mbNetGetFaviconCallback callback, void* param)
获取网页的Favicon,结果在mbNetGetFaviconCallback中获取,mbNetGetFaviconCallback定义为:
cpp
typedef struct _mbMemBuf {
int size;
void* data;
size_t length;
} mbMemBuf;
typedef void(MB_CALL_TYPE *mbNetGetFaviconCallback)(mbWebView webView, void* param, const utf8* url, mbMemBuf* buf);
mbOnConsole
void mbOnConsole(mbWebView webView, mbConsoleCallback callback, void* param)
有Console输出时会触发此回调,mbConsoleCallback定义为:
cpp
typedef enum {
mbLevelDebug = 4,
mbLevelLog = 1,
mbLevelInfo = 5,
mbLevelWarning = 2,
mbLevelError = 3,
mbLevelRevokedError = 6,
mbLevelLast = mbLevelInfo
} mbConsoleLevel;
typedef void(MB_CALL_TYPE *mbConsoleCallback)(
mbWebView webView,
void* param,
mbConsoleLevel level,
const utf8* message,
const utf8* sourceName,
unsigned sourceLine,
const utf8* stackTrace
);
mbOnClose
BOOL mbOnClose(mbWebView webView, mbCloseCallback callback, void* param)
网页关闭时会触发此回调,如mbCloseCallback返回为false,则表示取消关闭操作,mbCloseCallback定义为:
cpp
typedef BOOL(MB_CALL_TYPE *mbCloseCallback)(mbWebView webView, void* param, void* unuse);
mbOnDestroy
BOOL mbOnDestroy(mbWebView webView, mbDestroyCallback callback, void* param)
【可跨线程】窗口被销毁时触发此回调,mbDestroyCallback定义为:
cpp
typedef BOOL(MB_CALL_TYPE *mbDestroyCallback)(mbWebView webView, void* param, void* unuse);
TIP
注意:不同于mbOnClose,这个操作无法取消。
mbOnPrinting
BOOL mbOnPrinting(mbWebView webView, mbPrintingCallback callback, void* param)
【可跨线程】打印时触发此回调,mbPrintingCallback定义为:
cpp
typedef enum _mbPrintintStep {
kPrintintStepStart,
kPrintintStepPreview,
kPrintintStepPrinting,
} mbPrintintStep;
typedef struct _mbPrintintSettings {
int dpi;
int width;
int height;
float scale;
} mbPrintintSettings;
typedef BOOL(MB_CALL_TYPE *mbPrintingCallback)(
mbWebView webview,
void* param,
mbPrintintStep step,
HDC hDC,
const mbPrintintSettings* settings,
int pageCount
);
mbOnDidCreateScriptContext
void mbOnDidCreateScriptContext(mbWebView webView, mbDidCreateScriptContextCallback callback, void* callbackParam)
执行js代码前,将触发此回调,mbDidCreateScriptContextCallback定义为:
cpp
typedef void* mbWebFrameHandle;
typedef void(MB_CALL_TYPE *mbDidCreateScriptContextCallback)(
mbWebView webView,
void* param,
mbWebFrameHandle frameId,
void* context,
int extensionGroup,
int worldId
);
mbOnPluginList
void mbOnPluginList(mbWebView webView, mbGetPluginListCallback callback, void* callbackParam)
【可跨线程】有插件加入插件列表时触发此回调,mbGetPluginListCallback定义为:
cpp
typedef BOOL(MB_CALL_TYPE *mbGetPluginListCallback)(BOOL refresh, void* pluginListBuilder, void* param);
mbOnImageBufferToDataURL
void mbOnImageBufferToDataURL(mbWebView webView, mbImageBufferToDataURLCallback callback, void* callbackParam)
有Image数据写入缓存时触发,可用于修改画布指纹,mbImageBufferToDataURLCallback定义为:
cpp
struct mbString;
typedef mbString* mbStringPtr;
typedef mbStringPtr(MB_CALL_TYPE *mbImageBufferToDataURLCallback)(mbWebView webView, void* param, const char* data, size_t size);
mbGoBack
void mbGoBack(mbWebView webView)
【可跨线程】强制让页面后退。
mbGoForward
void mbGoForward(mbWebView webView)
【可跨线程】强制让页面前进。
mbStopLoading
void mbStopLoading(mbWebView webView)
【可跨线程】强制停止加载页面。
mbReload
void mbReload(mbWebView webView)
【可跨线程】重新加载页面(刷新)。
TIP
注意:此接口是强制刷新,即需要从服务器重新拉取数据,相当于Ctrl+F5操作。
mbPerformCookieCommand
void mbPerformCookieCommand(mbWebView webView, mbCookieCommand command)
设置mb内置的curl来操作cookie,mbCookieCommand定义为:
cpp
typedef enum {
mbCookieCommandClearAllCookies,
mbCookieCommandClearSessionCookies,
mbCookieCommandFlushCookiesToFile,
mbCookieCommandReloadCookiesFromFile,
} mbCookieCommand;
TIP
注意:这个接口只是调用curl设置命令,并不会去修改js里的内容。
mbEditorSelectAll
void mbEditorSelectAll(mbWebView webView)
给webview发送全选命令。
mbEditorCopy
void mbEditorCopy(mbWebView webView)
给webview发送拷贝命令。
mbEditorCut
void mbEditorCut(mbWebView webView)
给webview发送剪切命令。
mbEditorPaste
void mbEditorPaste(mbWebView webView)
给webview发送粘贴命令。
mbEditorDelete
void mbEditorDelete(mbWebView webView)
给webview发送删除命令。
mbEditorUndo
void mbEditorUndo(mbWebView webView)
给webview发送撤销命令。
mbFireMouseEvent
BOOL mbFireMouseEvent(mbWebView webView, unsigned int message, int x, int y, unsigned int flags)
触发一个鼠标事件,message及flags的可取值为:
cpp
typedef enum {
MB_MSG_MOUSEMOVE = 0x0200,
MB_MSG_LBUTTONDOWN = 0x0201,
MB_MSG_LBUTTONUP = 0x0202,
MB_MSG_LBUTTONDBLCLK = 0x0203,
MB_MSG_RBUTTONDOWN = 0x0204,
MB_MSG_RBUTTONUP = 0x0205,
MB_MSG_RBUTTONDBLCLK = 0x0206,
MB_MSG_MBUTTONDOWN = 0x0207,
MB_MSG_MBUTTONUP = 0x0208,
MB_MSG_MBUTTONDBLCLK = 0x0209,
MB_MSG_MOUSEWHEEL = 0x020A,
} mbMouseMsg;
typedef enum {
MB_LBUTTON = 0x01,
MB_RBUTTON = 0x02,
MB_SHIFT = 0x04,
MB_CONTROL = 0x08,
MB_MBUTTON = 0x10,
} mbMouseFlags;
TIP
注意:x和y为相对窗口左上角的像素坐标。
mbFireContextMenuEvent
BOOL mbFireContextMenuEvent(mbWebView webView, int x, int y, unsigned int flags)
向mb发送菜单消息。
mbFireMouseWheelEvent
BOOL mbFireMouseWheelEvent(mbWebView webView, int x, int y, int delta, unsigned int flags)
向mb发送滚轮消息。
mbFireKeyUpEvent
BOOL mbFireKeyUpEvent(mbWebView webView, unsigned int virtualKeyCode, unsigned int flags, BOOL systemKey)
向mb发送WM_KEYUP消息。
mbFireKeyDownEvent
BOOL mbFireKeyDownEvent(mbWebView webView, unsigned int virtualKeyCode, unsigned int flags, BOOL systemKey)
向mb发送WM_KEYDOWN消息。
mbFireKeyPressEvent
BOOL mbFireKeyPressEvent(mbWebView webView, unsigned int charCode, unsigned int flags, BOOL systemKey)
向mb发送鼠标点击消息。
mbFireWindowsMessage
BOOL mbFireWindowsMessage(mbWebView webView, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* result)
向mb发送任意windows消息。
TIP
注意:MB在无窗口模式下,要响应光标事件,需要通过本函数手动发送光标消息。
mbSetFocus
void mbSetFocus(mbWebView webView)
设置webview是焦点态。如果webveiw关联了窗口,窗口也会有焦点。
mbKillFocus
void mbKillFocus(mbWebView webView)
设置webview放弃焦点态。
mbShowWindow
void mbShowWindow(mbWebView webview, BOOL show)
【可跨线程】设置是否显示窗口。
mbLoadURL
void mbLoadURL(mbWebView webView, const utf8* url)
【可跨线程】加载URL。
TIP
注意:url必须是网络路径,如https://qq.com/。
mbLoadHtmlWithBaseUrl
void mbLoadHtmlWithBaseUrl(mbWebView webView, const utf8* html, const utf8* baseUrl)
加载一段HTML代码,如果代码里有相对路径的文件操作,baseUrl可以指定代码中的相对目录,””则为当前目录。
mbPostURL
void mbPostURL(mbWebView webView, const utf8* url, const char* postData, int postLen)
向指定URL发送一组数据。
mbGetLockedViewDC
HDC mbGetLockedViewDC(mbWebView webView)
获取页面DC锁。
mbUnlockViewDC
void mbUnlockViewDC(mbWebView webView)
解锁页面DC。
mbWake
void mbWake(mbWebView webView)
【可跨线程】唤醒指定的webView。
mbJsToDouble
double mbJsToDouble(mbJsExecState es, mbJsValue v)
【可跨线程】将js值转成C代码中的double类型。
mbJsToBoolean
BOOL mbJsToBoolean(mbJsExecState es, mbJsValue v)
【可跨线程】将js值转成C代码中的BOOL类型。
mbJsToString
const utf8* mbJsToString(mbJsExecState es, mbJsValue v)
【可跨线程】将js值转成C代码中的字符串类型。
mbGetJsValueType
mbJsType mbGetJsValueType(mbJsExecState es, mbJsValue v)
【可跨线程】获取js值的类型,mbJsType定义为:
cpp
typedef enum {
kMbJsTypeNumber = 0,
kMbJsTypeString = 1,
kMbJsTypeBool = 2,
//kMbJsTypeObject = 3,
//kMbJsTypeFunction = 4,
kMbJsTypeUndefined = 5,
//kMbJsTypeArray = 6,
kMbJsTypeNull = 7,
} mbJsType;
mbOnJsQuery
void mbOnJsQuery(mbWebView webView, mbJsQueryCallback callback, void* param)
注册js通知native的回调。配合mbResponseQuery接口,用于实现js调用C++,具体用法参看官网https://miniblink.net/views/doc/other.html。
mbJsQueryCallback定义为:
cpp
typedef void* mbJsExecState;
typedef void(MB_CALL_TYPE* mbJsQueryCallback)(
mbWebView webView,
void* param,
mbJsExecState es,
int64_t queryId,
int customMsg,
const utf8* request
);
mbResponseQuery
void mbResponseQuery(mbWebView webView, int64_t queryId, int customMsg, const utf8* response)
C++代码执行结果需要返回给js时,可使用此接口。
mbRunJs
void mbRunJs(mbWebView webView, mbWebFrameHandle frameId, const utf8* script, BOOL isInClosure, mbRunJsCallback callback, void* param, void* unuse)
【可跨线程】在C++中执行一段js代码或页面中的js函数,js执行结果在mbRunJsCallback中获取,frameId可通过mbWebFrameGetMainFrame接口获取,mbRunJsCallback定义为:
cpp
typedef void* mbJsExecState;
typedef int64_t mbJsValue;
typedef void(MB_CALL_TYPE *mbRunJsCallback)(mbWebView webView, void* param, mbJsExecState es, mbJsValue v);
TIP
注意:
1、isInClosure为指定是否闭包执行,即MB会将js代码放入一个function(){ script }中执行,所以script代码中如果含有大括号字符,请转义,否则会运行出错。
2、如js有返回值,则script参数前需要加上“return”。
mbRunJsSync
mbJsValue mbRunJsSync(mbWebView webView, mbWebFrameHandle frameId, const utf8* script, BOOL isInClosure)
在指定的frame中执行js,不同于mbRunJs,此接口结果会直接返回。
TIP
注意:此接口尚未实现。
mbWebFrameGetMainFrame
mbWebFrameHandle mbWebFrameGetMainFrame(mbWebView webView)
【可跨线程】获取主frame的句柄。
mbIsMainFrame
BOOL mbIsMainFrame(mbWebView webView, mbWebFrameHandle frameId)
判断是否是主frame。
mbSetNodeJsEnable
void mbSetNodeJsEnable(mbWebView webView, BOOL b)
是否开启NodeJs,默认不开启。
mbSetDeviceParameter
void mbSetDeviceParameter(mbWebView webView, const char* device, const char* paramStr, int paramInt, float paramFloat)
设置webView模拟硬件设备环境,device:可取值如下:
navigator.maxTouchPoints时,paramInt需设置,表示touch的点数。
navigator.platform时,paramStr需设置,表示js里获取的navigator.platform字符串。
navigator.hardwareConcurrency时,paramInt需设置,表示js里获取的navigator.hardwareConcurrency整数值。
screen.width时,paramInt需设置,表示js里获取的screen.width整数值。
screen.height时,paramInt需设置,表示js里获取的screen.height整数值。
screen.availWidth时,paramInt需设置,表示js里获取的screen.availWidth整数值。
screen.availHeight时,paramInt需设置,表示js里获取的screen.availHeight整数值。
screen.pixelDepth时,paramInt需设置,表示js里获取的screen.pixelDepth整数值。
TIP
注意:由于现在网页大多通过多种特征判断客户端类型,所以这个接口只能做个调试,实际应用中进行模拟基本没啥用。
mbGetContentAsMarkup
void mbGetContentAsMarkup(mbWebView webView, mbGetContentAsMarkupCallback calback, void* param, mbWebFrameHandle frameId)
获取标记内容,结果在mbGetContentAsMarkupCallback中获取,mbGetContentAsMarkupCallback定义为:
cpp
typedef void(MB_CALL_TYPE* mbGetContentAsMarkupCallback)(mbWebView webView, void* param, const utf8* content, size_t size);
mbGetSource
void mbGetSource(mbWebView webView, mbGetSourceCallback calback, void* param)
获取网页H5源码,结果在mbGetSourceCallback中获取,mbGetSourceCallback定义为:
cpp
typedef void(MB_CALL_TYPE* mbGetSourceCallback)(mbWebView webView, void* param, const utf8* mhtml);
mbUtilSerializeToMHTML
void mbUtilSerializeToMHTML(mbWebView webView, mbGetSourceCallback calback, void* param)
将网页导出为MHTML,结果在mbGetSourceCallback中获取,mbGetSourceCallback定义为:
cpp
typedef void(MB_CALL_TYPE* mbGetSourceCallback)(mbWebView webView, void* param, const utf8* mhtml);
mbUtilCreateRequestCode
const char* mbUtilCreateRequestCode(const char* registerInfo)
【可跨线程】获取请求码,MB内部使用。
mbUtilIsRegistered
BOOL mbUtilIsRegistered(const wchar_t* defaultPath)
【可跨线程】是否已经注册,MB内部使用。
mbUtilPrint
BOOL mbUtilPrint(mbWebView webView, mbWebFrameHandle frameId, const mbPrintSettings* printParams)
【可跨线程】执行打印,mbPrintSettings定义为:
cpp
typedef struct _mbPrintSettings {
int structSize;
int dpi;
int width;
int height;
int marginTop;
int marginBottom;
int marginLeft;
int marginRight;
BOOL isPrintPageHeadAndFooter;
BOOL isPrintBackgroud;
BOOL isLandscape;
BOOL isPrintToMultiPage;
} mbPrintSettings;
mbUtilBase64Encode
const utf8* mbUtilBase64Encode(const utf8* str)
【可跨线程】Base64编码。
mbUtilBase64Decode
const utf8* mbUtilBase64Decode(const utf8* str)
【可跨线程】Base64解码。
mbUtilEncodeURLEscape
const utf8* mbUtilEncodeURLEscape(const utf8* url)
【可跨线程】Escape编码。
mbUtilDecodeURLEscape
const utf8* mbUtilDecodeURLEscape(const utf8* url)
【可跨线程】Escape解码。
mbUtilCreateV8Snapshot
const mbMemBuf* mbUtilCreateV8Snapshot(const utf8* str)
【可跨线程】创建V8引擎内存快照,一般用于程序调试。
TIP
注意:该接口尚未实现。
mbUtilPrintToPdf
void mbUtilPrintToPdf(mbWebView webView, mbWebFrameHandle frameId, const mbPrintSettings* settings, mbPrintPdfDataCallback callback, void* param)
【可跨线程】将页面输出成pdf,mbPrintPdfDataCallback定义为:
cpp
typedef struct _mbPrintSettings {
int structSize;
int dpi;
int width;
int height;
int marginTop;
int marginBottom;
int marginLeft;
int marginRight;
BOOL isPrintPageHeadAndFooter;
BOOL isPrintBackgroud;
BOOL isLandscape;
BOOL isPrintToMultiPage;
} mbPrintSettings;
typedef struct _mbPdfDatas {
int count;
size_t* sizes;
const void** datas;
} mbPdfDatas;
typedef void(MB_CALL_TYPE* mbPrintPdfDataCallback)(mbWebView webview, void* param, const mbPdfDatas* datas);
TIP
注意:plugin目录下需放置打印PDF相关插件文件。
mbUtilPrintToBitmap
void mbUtilPrintToBitmap(mbWebView webView, mbWebFrameHandle frameId, const mbScreenshotSettings* settings, mbPrintBitmapCallback callback, void* param)
【可跨线程】把页面输出成图片,结果在mbPrintBitmapCallback中获取,mbPrintBitmapCallback定义为:
cpp
typedef struct _mbScreenshotSettings {
int structSize;
int width;
int height;
} mbScreenshotSettings;
typedef void(MB_CALL_TYPE* mbPrintBitmapCallback)(mbWebView webview, void* param, const char* data, size_t size);
mbUtilScreenshot
void mbUtilScreenshot(mbWebView webView, const mbScreenshotSettings* settings, mbOnScreenshot callback, void* param)
【可跨线程】截屏,结果在mbOnScreenshot中获取,mbOnScreenshot定义为:
cpp
typedef struct _mbScreenshotSettings {
int structSize;
int width;
int height;
} mbScreenshotSettings;
typedef void(MB_CALL_TYPE* mbOnScreenshot)(mbWebView webView, void* param, const char* data, size_t size);
mbPopupDownloadMgr
BOOL mbPopupDownloadMgr(mbWebView webView, const char* url, void* downloadWrap)
下载。
TIP
注意:该接口尚未完成,暂不可用。
mbPopupDialogAndDownload
mbDownloadOpt mbPopupDialogAndDownload(mbWebView webView, void* param, size_t contentLength, const char* url, const char* mime, const char* disposition, mbNetJob job, mbNetJobDataBind* dataBind, mbDownloadBind* callbackBind)
【可跨线程】下载,一般在mbOnDownloadInBlinkThread的回调中调用,参数定义为:
cpp
typedef enum _mbDownloadOpt {
kMbDownloadOptCancel,
kMbDownloadOptCacheData,
} mbDownloadOpt;
typedef void* mbNetJob;
typedef void(MB_CALL_TYPE*mbNetJobDataRecvCallback)(void* ptr, mbNetJob job, const char* data, int length);
typedef void(MB_CALL_TYPE*mbNetJobDataFinishCallback)(void* ptr, mbNetJob job, mbLoadingResult result);
typedef void(MB_CALL_TYPE*mbPopupDialogSaveNameCallback)(void* ptr, const wchar_t* filePath);
typedef struct _mbNetJobDataBind {
void* param;
mbNetJobDataRecvCallback recvCallback;
mbNetJobDataFinishCallback finishCallback;
} mbNetJobDataBind;
typedef struct _mbDownloadBind {
void* param;
mbNetJobDataRecvCallback recvCallback;
mbNetJobDataFinishCallback finishCallback;
mbPopupDialogSaveNameCallback saveNameCallback;
} mbDownloadBind;
mbDownloadByPath
mbDownloadOpt mbDownloadByPath(mbWebView webView, void* param, const WCHAR* path, size_t contentLength, const char* url, const char* mime, const char* disposition, mbNetJob job, mbNetJobDataBind* dataBind, mbDownloadBind* callbackBind)
【可跨线程】下载,一般在mbOnDownloadInBlinkThread的回调中调用,参数定义同mbPopupDialogAndDownload。
mbGetPdfPageData
void mbGetPdfPageData(mbWebView webView, mbOnGetPdfPageDataCallback callback, void* param)
【可跨线程】获取PDF数据,结果在mbOnGetPdfPageDataCallback中获取,mbOnGetPdfPageDataCallback定义为:
cpp
typedef void(MB_CALL_TYPE *mbOnGetPdfPageDataCallback)(mbWebView webView, void* param, void* data, size_t size);
mbCreateMemBuf
mbMemBuf* mbCreateMemBuf(mbWebView webView, void* buf, size_t length)
【可跨线程】创建一块内存缓存,MB内部使用。
TIP
注意:该接口尚未实现。
mbFreeMemBuf
void mbFreeMemBuf(mbMemBuf* buf)
【可跨线程】释放内存缓存,MB内部使用。
mbPluginListBuilderAddPlugin
void mbPluginListBuilderAddPlugin(void* builder, const utf8* name, const utf8* description, const utf8* fileName)
【可跨线程】添加插件。
mbPluginListBuilderAddMediaTypeToLastPlugin
void mbPluginListBuilderAddMediaTypeToLastPlugin(void* builder, const utf8* name, const utf8* description)
【可跨线程】添加多媒体类型插件到插件列表尾部。
mbPluginListBuilderAddFileExtensionToLastMediaType
void mbPluginListBuilderAddFileExtensionToLastMediaType(void* builder, const utf8* fileExtension)
【可跨线程】在多媒体插件添加文件扩展信息。