Skip to content
On this page

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)

【可跨线程】在多媒体插件添加文件扩展信息。