Hello, MiniBlink!

miniblink主要用来做PC端浏览器嵌入组件,由于导出的是wke和cef的接口,所以你可以替换到你的项目中去体验和学习。相当于一个wke的升级版本,或者cef的精简版。

虽然我花了大量精力维护,但bug可能在所难免。望广大网友积极反馈,我会大力修复

例子可见源码中的wkexe工程,或者cefclient(被废弃)

发布问题或需求

API文档

weolar 发表了文章 • 0 个评论 • 19 次浏览 • 1 天前 • 来自相关话题

unsigned int wkeVersion();
获取目前api版本号


const utf8* wkeVersionString();
获取版本字符串


void wkeGC(wkeWebView webView, long delayMs);
延迟让miniblink垃圾回收


void wkeSetFileSystem(WKE_FILE_OPEN pfnOpen, WKE_FILE_CLOSE pfnClose, WKE_FILE_SIZE pfnSize, WKE_FILE_READ pfnRead, WKE_FILE_SEEK pfnSeek)
wke遗留的接口,设置文件相关的hook函数。可以作为拦截对文件的操作。现在已被更先进的函数取代


bool wkeIsLoaded(wkeWebView webView);
获取webView是否处于加载状态,还是加载完成。(此函数被废弃)


bool wkeIsLoadingSucceeded(wkeWebView webView)
判断webview是否加载成功


bool wkeIsLoadFailed(wkeWebView webView)
判断webview是否加载失败


bool wkeIsLoadComplete(wkeWebView webView)
判断webview是否加载完成。


注意,wkeIsLoadComplete等效于wkeIsLoadFailed、wkeIsLoadingSucceeded其中任何一个返回true


bool wkeIsDocumentReady(wkeWebView webView)
DOM文档结构是否加载完成。和上述几个接口不同,上述几个接口是网络相关的判断。


void wkeStopLoading(wkeWebView webView)
停止加载页面


void wkeReload(wkeWebView webView)
重新加载页面


const utf8* wkeGetTitle(wkeWebView webView)
获取页面标题


const wchar_t* wkeGetTitleW(wkeWebView webView)
获取页面标题的宽字节版本


void wkeResize(wkeWebView webView, int w, int h)
重新设置页面的宽高。如果webView是带窗口模式的,会设置真窗口的宽高。


int wkeGetWidth(wkeWebView webView)
获取页面宽度


int wkeGetHeight(wkeWebView webView)
获取页面高度


int wkeGetContentWidth(wkeWebView webView)
获取网页排版出来的高度


int wkeGetContentHeight(wkeWebView webView)
获取网页排版出来的高度


void wkeSetDirty(wkeWebView webView, bool dirty)
(被废弃)设置页面为脏状态,在下一帧将强制重绘页面


bool wkeIsDirty(wkeWebView webView)
(被废弃)获取页面脏状态


void wkeAddDirtyArea(wkeWebView webView, int x, int y, int w, int h)
(被废弃)添加页面脏矩形


void wkeLayoutIfNeeded(wkeWebView webView)
(被废弃) 强制让页面重新排版


void wkePaint2(wkeWebView webView, void* bits, int bufWid, int bufHei, int xDst, int yDst, 
int w, int h, int xSrc, int ySrc, bool bCopyAlpha)
获取页面的像素。
参数:
bits:外部申请并传递给mb的buffer,大小是bufWid * bufHei * 4 字节
bufWid、bufHei:bits的宽高
xDst、yDst:绘制到bits的哪个坐标。
w、h、xSrc、ySrc:mb需要取的画面的起始坐标
bCopyAlpha:是否拷贝画面的透明度值


void wkePaint(wkeWebView webView, void* bits, int pitch)
获取页面的像素的简化版函数。
bits:外部申请并传递给mb的buffer,大小是webview宽度 * 高度 * 4 字节。
pitch:填0即可。这个参数玩过directX的人应该懂


void wkeRepaintIfNeeded(wkeWebView webView)
强制重绘页面


HDC wkeGetViewDC(wkeWebView webView)
获取webview的DC


HWND wkeGetHostHWND(wkeWebView webView)
获取webveiw对应的窗口句柄


bool wkeCanGoBack(wkeWebView webView)
页面是否可以后退


bool wkeGoBack(wkeWebView webView)
强制让页面后退


bool wkeCanGoForward(wkeWebView webView)



bool wkeGoForward(wkeWebView webView)



void wkeEditorSelectAll(wkeWebView webView)
全选整个页面


void wkeEditorUnSelect(wkeWebView webView)



void wkeEditorCopy(wkeWebView webView)
拷贝页面里被选中的字符串


void wkeEditorCut(wkeWebView webView)



void wkeEditorPaste(wkeWebView webView)



void wkeEditorDelete(wkeWebView webView)



void wkeEditorUndo(wkeWebView webView)



void wkeEditorRedo(wkeWebView webView)



const wchar_t * wkeGetCookieW(wkeWebView webView)、
获取页面的cookie


const utf8* wkeGetCookie(wkeWebView webView)



void wkeSetCookie(wkeWebView webView, const utf8* url, const utf8* cookie)
设置页面cookie。
注意的是,cookie必须符合curl的cookie写法。至于curl的cookie怎么写,请自行搜索


void wkeVisitAllCookie(void* params, wkeCookieVisitor visitor)
通过访问器visitor访问所有cookie。


void wkePerformCookieCommand(wkeCookieCommand command)
通过设置mb内置的curl来操作cookie。
command:
wkeCookieCommandClearAllCookies:内部实际执行了curl_easy_setopt(curl, CURLOPT_COOKIELIST, "ALL");命令
wkeCookieCommandClearSessionCookies: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "SESS");
wkeCookieCommandFlushCookiesToFile: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "FLUSH");
wkeCookieCommandReloadCookiesFromFile: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "RELOAD");


void wkeSetCookieEnabled(wkeWebView webView, bool enable)
开启或关闭cookie


bool wkeIsCookieEnabled(wkeWebView webView)



void wkeSetCookieJarPath(wkeWebView webView, const WCHAR* path)
设置cookie的本地文件名。默认是“cookie.dat”


void wkeSetCookieJarFullPath(wkeWebView webView, const WCHAR* path)
设置cookie的全路径+文件名,如“c:\mb\cookie.dat”


void wkeSetLocalStorageFullPath(wkeWebView webView, const WCHAR* path)
设置local storage的全路径。如“c:\mb\LocalStorage\”


void wkeAddPluginDirectory(wkeWebView webView, const WCHAR* path)
添加npapi的插件搜索目录。如果不设置,默认是“‘exe目录’\plugins\”


void wkeSetMediaVolume(wkeWebView webView, float volume)
设置音量,未实现


float wkeGetMediaVolume(wkeWebView webView)
获取音量,未实现


bool wkeFireMouseEvent(wkeWebView webView, unsigned int message, int x, int y, unsigned int flags)
向mb发送鼠标消息。
参数:
message:可取WM_MOUSELEAVE等Windows相关鼠标消息
x、y:坐标
flags:可取值有WKE_CONTROL、WKE_SHIFT、WKE_LBUTTON、WKE_MBUTTON、WKE_RBUTTON,可通过“或”操作并联。


bool wkeFireContextMenuEvent(wkeWebView webView, int x, int y, unsigned int flags)
向mb发送菜单消息(未实现)


bool wkeFireMouseWheelEvent(wkeWebView webView, int x, int y, int delta, unsigned int flags)
向mb发送滚轮消息,用法和参数类似wkeFireMouseEvent。


bool wkeFireKeyUpEvent(wkeWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey)
向mb发送WM_KEYUP消息,
参数:
virtualKeyCode:见https://msdn.microsoft.com/en- ... 75731(v=vs.85).aspx
flags:可取值有WKE_REPEAT、WKE_EXTENDED,可通过“或”操作并联。
systemKey:暂时没用


bool wkeFireKeyDownEvent(wkeWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey)
向mb发送WM_KEYDOWN消息,同上


bool wkeFireKeyPressEvent(wkeWebView webView, unsigned int charCode, unsigned int flags, bool systemKey)
向mb发送WM_CHAR消息,同上
参数:
charCode:WM_CHAR消息的The character code of the key.见https://msdn.microsoft.com/en- ... 46276(v=vs.85).aspx


bool wkeFireWindowsMessage(wkeWebView webView, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* result)
向mb发送任意windows消息。不过目前mb主要用来处理光标相关。mb在无窗口模式下,要响应光标事件,需要手动发送光标消息,通过本函数


void wkeSetFocus(wkeWebView webView)
设置webview是焦点态。如果webveiw关联了窗口,窗口也会有焦点


void wkeKillFocus(wkeWebView webView)



wkeRect wkeGetCaretRect(wkeWebView webView)
获取编辑框的那个游标的位置


jsValue wkeRunJS(wkeWebView webView, const utf8* script)
运行一段js。返回js的值jsValue。jsValue是个封装了内部v8各种类型的类,如果需要获取详细信息,有jsXXX相关接口可以调用。见下述。


jsValue wkeRunJSW(wkeWebView webView, const wchar_t* script)



jsExecState wkeGlobalExec(wkeWebView webView)
获取页面主frame的jsExecState。jsExecState是什么,见下述。


void wkeSleep(wkeWebView webView)
暂没实现


void wkeWake(wkeWebView webView)
触发mb的心跳。如果需要高帧率,可以手动多次触发此接口


bool wkeIsAwake(wkeWebView webView)
未实现


void wkeSetZoomFactor(wkeWebView webView, float factor)
设置页面缩放系数,默认是1


float wkeGetZoomFactor(wkeWebView webView)



void wkeSetEditable(wkeWebView webView, bool editable)
未实现


void wkeOnTitleChanged(wkeWebView webView, wkeTitleChangedCallback callback, void* callbackParam)
设置标题变化的通知回调
typedef void(*wkeTitleChangedCallback)(wkeWebView webView, void* param, const wkeString title)
title:标题的字符串封装。wkeString怎么用,见相关接口。
param:通过wkeOnTitleChanged的callbackParam设置


void wkeOnMouseOverUrlChanged(wkeWebView webView, wkeTitleChangedCallback callback, void* callbackParam)
鼠标划过的元素,如果是<a>,则调用此回调,并发送a标签的url


void wkeOnURLChanged(wkeWebView webView, wkeURLChangedCallback callback, void* callbackParam)
url改变回调


void wkeOnURLChanged2(wkeWebView webView, wkeURLChangedCallback2 callback, void* callbackParam)
和上个接口不同的是,回调多了个参数
typedef void(*wkeURLChangedCallback2)(wkeWebView webView, void* param, wkeWebFrameHandle frameId, const wkeString url)
frameId表示frame的id。有相关接口可以判断这个frameId是否是主frame


void wkeOnPaintUpdated(wkeWebView webView, wkePaintUpdatedCallback callback, void* callbackParam)
页面有任何需要刷新的地方,将调用此回调
typedef void(*wkePaintUpdatedCallback)(wkeWebView webView, void* param, const HDC hdc, int x, int y, int cx, int cy)
x、y、cx、cy表示刷新的区域矩形


void wkeOnPaintBitUpdated(wkeWebView webView, wkePaintBitUpdatedCallback callback, void* callbackParam)
同上。不同的是
typedef void(*wkePaintBitUpdatedCallback)(wkeWebView webView, void* param, const void* buffer, const wkeRect* r, int width, int height)
回调过来的是填充好像素的buffer,而不是DC。方便嵌入到游戏中做离屏渲染


void wkeOnAlertBox(wkeWebView webView, wkeAlertBoxCallback callback, void* callbackParam)
网页调用alert会走到这个接口填入的回调


void wkeOnConfirmBox(wkeWebView webView, wkeConfirmBoxCallback callback, void* callbackParam)



void wkeOnPromptBox(wkeWebView webView, wkePromptBoxCallback callback, void* callbackParam)



void wkeOnNavigation(wkeWebView webView, wkeNavigationCallback callback, void* param)
网页开始浏览将触发回调
typedef bool(*wkeNavigationCallback)(wkeWebView webView, void* param, wkeNavigationType navigationType, const wkeString url);
wkeNavigationType 表示浏览触发的原因。
值有:
    WKE_NAVIGATION_TYPE_LINKCLICK, 点击<a>触发
    WKE_NAVIGATION_TYPE_FORMSUBMITTE,  点击form触发
    WKE_NAVIGATION_TYPE_BACKFORWARD, 前进后退触发
    WKE_NAVIGATION_TYPE_RELOAD, 重新加载触发
注意的是,wkeNavigationCallback回调的返回值,如果是true,表示可以继续进行浏览,false表示阻止本次浏览。


void wkeOnCreateView(wkeWebView webView, wkeCreateViewCallback callback, void* param)
网页点击<a>创建新窗口时将触发回调
typedef wkeWebView(*wkeCreateViewCallback)(wkeWebView webView, void* param, wkeNavigationType navigationType, const wkeString url, const wkeWindowFeatures* windowFeatures);
参数:
wkeWindowFeatures:
typedef struct {
    int x;
    int y;
    int width;
    int height;


    bool menuBarVisible;
    bool statusBarVisible;
    bool toolBarVisible;
    bool locationBarVisible;
    bool scrollbarsVisible;
    bool resizable;
    bool fullscreen;
} wkeWindowFeatures;


void wkeOnDocumentReady(wkeWebView webView, wkeDocumentReadyCallback callback, void* param)
对应js里的body onload事件


void wkeOnDocumentReady2(wkeWebView webView, wkeDocumentReady2Callback callback, void* param)
同上。区别是wkeDocumentReady2Callback多了wkeWebFrameHandle frameId参数。可以判断是否是主frame


void wkeOnLoadingFinish(wkeWebView webView, wkeLoadingFinishCallback callback, void* param)
页面加载完成回调


void wkeOnDownload(wkeWebView webView, wkeDownloadCallback callback, void* param)
页面下载事件回调。点击某些链接,触发下载会调用


void wkeNetOnResponse(wkeWebView webView, wkeNetResponseCallback callback, void* param)
一个网络请求发送后,收到服务器response触发回调


void wkeOnConsole(wkeWebView webView, wkeConsoleCallback callback, void* param)
网页调用console触发


void wkeSetUIThreadCallback(wkeWebView webView, wkeCallUiThread callback, void* param)
暂时未实现


void wkeOnLoadUrlBegin(wkeWebView webView, wkeLoadUrlBeginCallback callback, void* callbackParam)
任何网络请求发起前会触发此回调


typedef bool(*wkeLoadUrlBeginCallback)(wkeWebView webView, void* param, const char *url, void *job)


注意:
1,此回调功能强大,在回调里,如果对job设置了wkeNetHookRequest,则表示mb会缓存获取到的网络数据,并在这次网络请求
结束后调用wkeOnLoadUrlEnd设置的回调,同时传递缓存的数据。在此期间,mb不会处理网络数据。
2,如果在wkeLoadUrlBeginCallback里没设置wkeNetHookRequest,则不会触发wkeOnLoadUrlEnd回调
3,如果wkeLoadUrlBeginCallback回调里返回true,表示mb不处理此网络请求(既不会发送网络请求)。返回false,表示mb依然会发送网络请求。
用法举例:
假如需要hook百度某个url(如http://baidu.com/a.js),替换为本地c:\b.js,则可以这样实现:
void readJsFile(const wchar_t* path, std::vector<char>* buffer) {
    HANDLE hFile = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (INVALID_HANDLE_VALUE == hFile) {
        DebugBreak();
        return;
    }


    DWORD fileSizeHigh;
    const DWORD bufferSize = ::GetFileSize(hFile, &fileSizeHigh);


    DWORD numberOfBytesRead = 0;
    buffer->resize(bufferSize);
    BOOL b = ::ReadFile(hFile, &buffer->at(0), bufferSize, &numberOfBytesRead, nullptr);
    ::CloseHandle(hFile);
    b = b;
}


static bool HookUrl(void* job, const char* url, const char* hookUrl, const wchar_t* localFile, const char* mime) {
    if (0 != strstr(url, hookUrl)) {
        wkeNetSetMIMEType(job, (char*)mime); // "text/html" "text/javascript"
        std::vector<char> buffer;
        ReadJsFile(localFile, &buffer);
        wkeNetSetData(job, &buffer[0], buffer.size());
        return true;
    }


    return false;
}


bool handleLoadUrlBegin(wkeWebView webView, void* param, const char* url, void* job) {
    if (HookUrl(job, url, "http://baidu.com/a.js", L"c:\\b.js", "text/javascript"))
        return true;
    
    return false;
}


如果需要拿到http://baidu.com/a.js的真实网络数据再修改,则可以
bool handleLoadUrlBegin(wkeWebView webView, void* param, const char* url, void* job) {
    if (0 != strstr(url, "http://baidu.com/a.js")) {
        wkeNetHookRequest(job);
        return true;
    }
    return false;
}


void handleLoadUrlEnd(wkeWebView webView, void* param, const char* url, void* job, void* buf, int len) {
    char code[] = "console.log('test')";
    wkeNetSetData(job, code, sizeof(code));
}


void wkeOnDidCreateScriptContext(wkeWebView webView, wkeDidCreateScriptContextCallback callback, void* callbackParam)
javascript的v8执行环境被创建时触发此回调
注意:每个frame创建时都会触发此回调。


void wkeOnWillReleaseScriptContext(wkeWebView webView, wkeWillReleaseScriptContextCallback callback, void* callbackParam)
javascript的v8执行环境被关闭时触发此回调


void wkeOnWillMediaLoad(wkeWebView webView, wkeWillMediaLoadCallback callback, void* callbackParam)
video等多媒体标签创建时触发此回调


bool wkeIsMainFrame(wkeWebView webView, wkeWebFrameHandle frameId)
判断frameId是否是主frame
  查看全部
unsigned int wkeVersion();
获取目前api版本号


const utf8* wkeVersionString();
获取版本字符串


void wkeGC(wkeWebView webView, long delayMs);
延迟让miniblink垃圾回收


void wkeSetFileSystem(WKE_FILE_OPEN pfnOpen, WKE_FILE_CLOSE pfnClose, WKE_FILE_SIZE pfnSize, WKE_FILE_READ pfnRead, WKE_FILE_SEEK pfnSeek)
wke遗留的接口,设置文件相关的hook函数。可以作为拦截对文件的操作。现在已被更先进的函数取代


bool wkeIsLoaded(wkeWebView webView);
获取webView是否处于加载状态,还是加载完成。(此函数被废弃)


bool wkeIsLoadingSucceeded(wkeWebView webView)
判断webview是否加载成功


bool wkeIsLoadFailed(wkeWebView webView)
判断webview是否加载失败


bool wkeIsLoadComplete(wkeWebView webView)
判断webview是否加载完成。


注意,wkeIsLoadComplete等效于wkeIsLoadFailed、wkeIsLoadingSucceeded其中任何一个返回true


bool wkeIsDocumentReady(wkeWebView webView)
DOM文档结构是否加载完成。和上述几个接口不同,上述几个接口是网络相关的判断。


void wkeStopLoading(wkeWebView webView)
停止加载页面


void wkeReload(wkeWebView webView)
重新加载页面


const utf8* wkeGetTitle(wkeWebView webView)
获取页面标题


const wchar_t* wkeGetTitleW(wkeWebView webView)
获取页面标题的宽字节版本


void wkeResize(wkeWebView webView, int w, int h)
重新设置页面的宽高。如果webView是带窗口模式的,会设置真窗口的宽高。


int wkeGetWidth(wkeWebView webView)
获取页面宽度


int wkeGetHeight(wkeWebView webView)
获取页面高度


int wkeGetContentWidth(wkeWebView webView)
获取网页排版出来的高度


int wkeGetContentHeight(wkeWebView webView)
获取网页排版出来的高度


void wkeSetDirty(wkeWebView webView, bool dirty)
(被废弃)设置页面为脏状态,在下一帧将强制重绘页面


bool wkeIsDirty(wkeWebView webView)
(被废弃)获取页面脏状态


void wkeAddDirtyArea(wkeWebView webView, int x, int y, int w, int h)
(被废弃)添加页面脏矩形


void wkeLayoutIfNeeded(wkeWebView webView)
(被废弃) 强制让页面重新排版


void wkePaint2(wkeWebView webView, void* bits, int bufWid, int bufHei, int xDst, int yDst, 
int w, int h, int xSrc, int ySrc, bool bCopyAlpha)
获取页面的像素。
参数:
bits:外部申请并传递给mb的buffer,大小是bufWid * bufHei * 4 字节
bufWid、bufHei:bits的宽高
xDst、yDst:绘制到bits的哪个坐标。
w、h、xSrc、ySrc:mb需要取的画面的起始坐标
bCopyAlpha:是否拷贝画面的透明度值


void wkePaint(wkeWebView webView, void* bits, int pitch)
获取页面的像素的简化版函数。
bits:外部申请并传递给mb的buffer,大小是webview宽度 * 高度 * 4 字节。
pitch:填0即可。这个参数玩过directX的人应该懂


void wkeRepaintIfNeeded(wkeWebView webView)
强制重绘页面


HDC wkeGetViewDC(wkeWebView webView)
获取webview的DC


HWND wkeGetHostHWND(wkeWebView webView)
获取webveiw对应的窗口句柄


bool wkeCanGoBack(wkeWebView webView)
页面是否可以后退


bool wkeGoBack(wkeWebView webView)
强制让页面后退


bool wkeCanGoForward(wkeWebView webView)



bool wkeGoForward(wkeWebView webView)



void wkeEditorSelectAll(wkeWebView webView)
全选整个页面


void wkeEditorUnSelect(wkeWebView webView)



void wkeEditorCopy(wkeWebView webView)
拷贝页面里被选中的字符串


void wkeEditorCut(wkeWebView webView)



void wkeEditorPaste(wkeWebView webView)



void wkeEditorDelete(wkeWebView webView)



void wkeEditorUndo(wkeWebView webView)



void wkeEditorRedo(wkeWebView webView)



const wchar_t * wkeGetCookieW(wkeWebView webView)、
获取页面的cookie


const utf8* wkeGetCookie(wkeWebView webView)



void wkeSetCookie(wkeWebView webView, const utf8* url, const utf8* cookie)
设置页面cookie。
注意的是,cookie必须符合curl的cookie写法。至于curl的cookie怎么写,请自行搜索


void wkeVisitAllCookie(void* params, wkeCookieVisitor visitor)
通过访问器visitor访问所有cookie。


void wkePerformCookieCommand(wkeCookieCommand command)
通过设置mb内置的curl来操作cookie。
command:
wkeCookieCommandClearAllCookies:内部实际执行了curl_easy_setopt(curl, CURLOPT_COOKIELIST, "ALL");命令
wkeCookieCommandClearSessionCookies: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "SESS");
wkeCookieCommandFlushCookiesToFile: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "FLUSH");
wkeCookieCommandReloadCookiesFromFile: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "RELOAD");


void wkeSetCookieEnabled(wkeWebView webView, bool enable)
开启或关闭cookie


bool wkeIsCookieEnabled(wkeWebView webView)



void wkeSetCookieJarPath(wkeWebView webView, const WCHAR* path)
设置cookie的本地文件名。默认是“cookie.dat”


void wkeSetCookieJarFullPath(wkeWebView webView, const WCHAR* path)
设置cookie的全路径+文件名,如“c:\mb\cookie.dat”


void wkeSetLocalStorageFullPath(wkeWebView webView, const WCHAR* path)
设置local storage的全路径。如“c:\mb\LocalStorage\”


void wkeAddPluginDirectory(wkeWebView webView, const WCHAR* path)
添加npapi的插件搜索目录。如果不设置,默认是“‘exe目录’\plugins\”


void wkeSetMediaVolume(wkeWebView webView, float volume)
设置音量,未实现


float wkeGetMediaVolume(wkeWebView webView)
获取音量,未实现


bool wkeFireMouseEvent(wkeWebView webView, unsigned int message, int x, int y, unsigned int flags)
向mb发送鼠标消息。
参数:
message:可取WM_MOUSELEAVE等Windows相关鼠标消息
x、y:坐标
flags:可取值有WKE_CONTROL、WKE_SHIFT、WKE_LBUTTON、WKE_MBUTTON、WKE_RBUTTON,可通过“或”操作并联。


bool wkeFireContextMenuEvent(wkeWebView webView, int x, int y, unsigned int flags)
向mb发送菜单消息(未实现)


bool wkeFireMouseWheelEvent(wkeWebView webView, int x, int y, int delta, unsigned int flags)
向mb发送滚轮消息,用法和参数类似wkeFireMouseEvent。


bool wkeFireKeyUpEvent(wkeWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey)
向mb发送WM_KEYUP消息,
参数:
virtualKeyCode:见https://msdn.microsoft.com/en- ... 75731(v=vs.85).aspx
flags:可取值有WKE_REPEAT、WKE_EXTENDED,可通过“或”操作并联。
systemKey:暂时没用


bool wkeFireKeyDownEvent(wkeWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey)
向mb发送WM_KEYDOWN消息,同上


bool wkeFireKeyPressEvent(wkeWebView webView, unsigned int charCode, unsigned int flags, bool systemKey)
向mb发送WM_CHAR消息,同上
参数:
charCode:WM_CHAR消息的The character code of the key.见https://msdn.microsoft.com/en- ... 46276(v=vs.85).aspx


bool wkeFireWindowsMessage(wkeWebView webView, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* result)
向mb发送任意windows消息。不过目前mb主要用来处理光标相关。mb在无窗口模式下,要响应光标事件,需要手动发送光标消息,通过本函数


void wkeSetFocus(wkeWebView webView)
设置webview是焦点态。如果webveiw关联了窗口,窗口也会有焦点


void wkeKillFocus(wkeWebView webView)



wkeRect wkeGetCaretRect(wkeWebView webView)
获取编辑框的那个游标的位置


jsValue wkeRunJS(wkeWebView webView, const utf8* script)
运行一段js。返回js的值jsValue。jsValue是个封装了内部v8各种类型的类,如果需要获取详细信息,有jsXXX相关接口可以调用。见下述。


jsValue wkeRunJSW(wkeWebView webView, const wchar_t* script)



jsExecState wkeGlobalExec(wkeWebView webView)
获取页面主frame的jsExecState。jsExecState是什么,见下述。


void wkeSleep(wkeWebView webView)
暂没实现


void wkeWake(wkeWebView webView)
触发mb的心跳。如果需要高帧率,可以手动多次触发此接口


bool wkeIsAwake(wkeWebView webView)
未实现


void wkeSetZoomFactor(wkeWebView webView, float factor)
设置页面缩放系数,默认是1


float wkeGetZoomFactor(wkeWebView webView)



void wkeSetEditable(wkeWebView webView, bool editable)
未实现


void wkeOnTitleChanged(wkeWebView webView, wkeTitleChangedCallback callback, void* callbackParam)
设置标题变化的通知回调
typedef void(*wkeTitleChangedCallback)(wkeWebView webView, void* param, const wkeString title)
title:标题的字符串封装。wkeString怎么用,见相关接口。
param:通过wkeOnTitleChanged的callbackParam设置


void wkeOnMouseOverUrlChanged(wkeWebView webView, wkeTitleChangedCallback callback, void* callbackParam)
鼠标划过的元素,如果是<a>,则调用此回调,并发送a标签的url


void wkeOnURLChanged(wkeWebView webView, wkeURLChangedCallback callback, void* callbackParam)
url改变回调


void wkeOnURLChanged2(wkeWebView webView, wkeURLChangedCallback2 callback, void* callbackParam)
和上个接口不同的是,回调多了个参数
typedef void(*wkeURLChangedCallback2)(wkeWebView webView, void* param, wkeWebFrameHandle frameId, const wkeString url)
frameId表示frame的id。有相关接口可以判断这个frameId是否是主frame


void wkeOnPaintUpdated(wkeWebView webView, wkePaintUpdatedCallback callback, void* callbackParam)
页面有任何需要刷新的地方,将调用此回调
typedef void(*wkePaintUpdatedCallback)(wkeWebView webView, void* param, const HDC hdc, int x, int y, int cx, int cy)
x、y、cx、cy表示刷新的区域矩形


void wkeOnPaintBitUpdated(wkeWebView webView, wkePaintBitUpdatedCallback callback, void* callbackParam)
同上。不同的是
typedef void(*wkePaintBitUpdatedCallback)(wkeWebView webView, void* param, const void* buffer, const wkeRect* r, int width, int height)
回调过来的是填充好像素的buffer,而不是DC。方便嵌入到游戏中做离屏渲染


void wkeOnAlertBox(wkeWebView webView, wkeAlertBoxCallback callback, void* callbackParam)
网页调用alert会走到这个接口填入的回调


void wkeOnConfirmBox(wkeWebView webView, wkeConfirmBoxCallback callback, void* callbackParam)



void wkeOnPromptBox(wkeWebView webView, wkePromptBoxCallback callback, void* callbackParam)



void wkeOnNavigation(wkeWebView webView, wkeNavigationCallback callback, void* param)
网页开始浏览将触发回调
typedef bool(*wkeNavigationCallback)(wkeWebView webView, void* param, wkeNavigationType navigationType, const wkeString url);
wkeNavigationType 表示浏览触发的原因。
值有:
    WKE_NAVIGATION_TYPE_LINKCLICK, 点击<a>触发
    WKE_NAVIGATION_TYPE_FORMSUBMITTE,  点击form触发
    WKE_NAVIGATION_TYPE_BACKFORWARD, 前进后退触发
    WKE_NAVIGATION_TYPE_RELOAD, 重新加载触发
注意的是,wkeNavigationCallback回调的返回值,如果是true,表示可以继续进行浏览,false表示阻止本次浏览。


void wkeOnCreateView(wkeWebView webView, wkeCreateViewCallback callback, void* param)
网页点击<a>创建新窗口时将触发回调
typedef wkeWebView(*wkeCreateViewCallback)(wkeWebView webView, void* param, wkeNavigationType navigationType, const wkeString url, const wkeWindowFeatures* windowFeatures);
参数:
wkeWindowFeatures:
typedef struct {
    int x;
    int y;
    int width;
    int height;


    bool menuBarVisible;
    bool statusBarVisible;
    bool toolBarVisible;
    bool locationBarVisible;
    bool scrollbarsVisible;
    bool resizable;
    bool fullscreen;
} wkeWindowFeatures;


void wkeOnDocumentReady(wkeWebView webView, wkeDocumentReadyCallback callback, void* param)
对应js里的body onload事件


void wkeOnDocumentReady2(wkeWebView webView, wkeDocumentReady2Callback callback, void* param)
同上。区别是wkeDocumentReady2Callback多了wkeWebFrameHandle frameId参数。可以判断是否是主frame


void wkeOnLoadingFinish(wkeWebView webView, wkeLoadingFinishCallback callback, void* param)
页面加载完成回调


void wkeOnDownload(wkeWebView webView, wkeDownloadCallback callback, void* param)
页面下载事件回调。点击某些链接,触发下载会调用


void wkeNetOnResponse(wkeWebView webView, wkeNetResponseCallback callback, void* param)
一个网络请求发送后,收到服务器response触发回调


void wkeOnConsole(wkeWebView webView, wkeConsoleCallback callback, void* param)
网页调用console触发


void wkeSetUIThreadCallback(wkeWebView webView, wkeCallUiThread callback, void* param)
暂时未实现


void wkeOnLoadUrlBegin(wkeWebView webView, wkeLoadUrlBeginCallback callback, void* callbackParam)
任何网络请求发起前会触发此回调


typedef bool(*wkeLoadUrlBeginCallback)(wkeWebView webView, void* param, const char *url, void *job)


注意:
1,此回调功能强大,在回调里,如果对job设置了wkeNetHookRequest,则表示mb会缓存获取到的网络数据,并在这次网络请求
结束后调用wkeOnLoadUrlEnd设置的回调,同时传递缓存的数据。在此期间,mb不会处理网络数据。
2,如果在wkeLoadUrlBeginCallback里没设置wkeNetHookRequest,则不会触发wkeOnLoadUrlEnd回调
3,如果wkeLoadUrlBeginCallback回调里返回true,表示mb不处理此网络请求(既不会发送网络请求)。返回false,表示mb依然会发送网络请求。
用法举例:
假如需要hook百度某个url(如http://baidu.com/a.js),替换为本地c:\b.js,则可以这样实现:
void readJsFile(const wchar_t* path, std::vector<char>* buffer) {
    HANDLE hFile = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (INVALID_HANDLE_VALUE == hFile) {
        DebugBreak();
        return;
    }


    DWORD fileSizeHigh;
    const DWORD bufferSize = ::GetFileSize(hFile, &fileSizeHigh);


    DWORD numberOfBytesRead = 0;
    buffer->resize(bufferSize);
    BOOL b = ::ReadFile(hFile, &buffer->at(0), bufferSize, &numberOfBytesRead, nullptr);
    ::CloseHandle(hFile);
    b = b;
}


static bool HookUrl(void* job, const char* url, const char* hookUrl, const wchar_t* localFile, const char* mime) {
    if (0 != strstr(url, hookUrl)) {
        wkeNetSetMIMEType(job, (char*)mime); // "text/html" "text/javascript"
        std::vector<char> buffer;
        ReadJsFile(localFile, &buffer);
        wkeNetSetData(job, &buffer[0], buffer.size());
        return true;
    }


    return false;
}


bool handleLoadUrlBegin(wkeWebView webView, void* param, const char* url, void* job) {
    if (HookUrl(job, url, "http://baidu.com/a.js", L"c:\\b.js", "text/javascript"))
        return true;
    
    return false;
}


如果需要拿到http://baidu.com/a.js的真实网络数据再修改,则可以
bool handleLoadUrlBegin(wkeWebView webView, void* param, const char* url, void* job) {
    if (0 != strstr(url, "http://baidu.com/a.js";)) {
        wkeNetHookRequest(job);
        return true;
    }
    return false;
}


void handleLoadUrlEnd(wkeWebView webView, void* param, const char* url, void* job, void* buf, int len) {
    char code[] = "console.log('test')";
    wkeNetSetData(job, code, sizeof(code));
}


void wkeOnDidCreateScriptContext(wkeWebView webView, wkeDidCreateScriptContextCallback callback, void* callbackParam)
javascript的v8执行环境被创建时触发此回调
注意:每个frame创建时都会触发此回调。


void wkeOnWillReleaseScriptContext(wkeWebView webView, wkeWillReleaseScriptContextCallback callback, void* callbackParam)
javascript的v8执行环境被关闭时触发此回调


void wkeOnWillMediaLoad(wkeWebView webView, wkeWillMediaLoadCallback callback, void* callbackParam)
video等多媒体标签创建时触发此回调


bool wkeIsMainFrame(wkeWebView webView, wkeWebFrameHandle frameId)
判断frameId是否是主frame
 

Bug/需求集中帖 小问题请到这提交

白貓 回复了问题 • 40 人关注 • 74 个回复 • 2380 次浏览 • 1 天前 • 来自相关话题

miniblink发几个目前的需求吧

乔内 回复了问题 • 2 人关注 • 1 个回复 • 450 次浏览 • 2018-05-09 15:35 • 来自相关话题

window.print()没有弹出打印窗口问题

回复

zeil 回复了问题 • 1 人关注 • 1 个回复 • 92 次浏览 • 2018-05-04 14:44 • 来自相关话题

miniblink每日最新下载地址

weolar 发表了文章 • 0 个评论 • 251 次浏览 • 2018-04-30 09:29 • 来自相关话题

最新下载地址见:https://blog.csdn.net/weolar/a ... 46895

-----------------------

以往更新历史:
 
2018.5.2
    修复来疯直播和腾讯视频播放位置以及右键菜单位置不对的问题
    修复local storage存储中文字符串会乱码的问题

2018.4.30    增强wkeGetCaretRect,当焦点元素不可编辑时,返回的高为0


2018.4.28
    增加禁用鼠标消息的接口


2018.4.26
    修复local storage保存到本地不生效的问题
    修复某些网站无法显示验证码的问题
    修复wkeIsLoadingCompleted等接口在reload后不准的问题
    修复flash右键菜单位置不对的问题


2018.4.24
    修复百度地图可能出现黑屏的问题
    修复gojs库无法拖拽的问题


2018.4.22
    修复开启devtools时,点击vue-route的demo的about按钮,无法跳转的问题


2018.4.20
    修复某些上传问题


2018.4.19
    修复某在线聊天的对话框里图片上传不了的问题
    修复同步ajax请求下url end回调没被调用的问题


2018.4.16
    修复一处不停刷新百度会崩溃问题。原因是messageport对象被提前回收了
    修复url 重定向导致load begin回调漏掉的问题
    修复baidu.v.ifeng.com/kan/aB0jU?fr=v.baidu.com/的flash右键菜单位置不对的bug
    修复v8_5_7版本无法使用devtools的问题
    修复中文路径无法使用devtools的问题


2018.4.13
    修复百度网盘无法上传的问题
    修复js绑定bool值返回的问题
    增加void wkeSetDeviceParameter(wkeWebView webView, const char* device, const char* paramStr, int paramInt, float paramFloat)接口,方便模拟各种设备
    修复https://toutiao.eastday.com/?qid=qid02761网站因为没有mime导致无法加载的问题


2018.4.12
    修复前进后退问题
    修复某些网站验证码无法显示问题
    修复百度识图无法上传问题


2018.4.2
    修改安全策略,允许wkeRunJS里的js代码浏览新url


2018.4.1
    增加wkeOnWillMediaLoad接口,方便模拟video等元素
    增加jsValue jsArrayBuffer(jsExecState es, char * buffer, size_t size);接口
    修复pushState事件,以及device.cx-j.cn/v1/list.html?nav=eHliODUxQHNpbmEuY29t&pav=ODIxMTE5&mode=1会意外后退的问题


2018.3.30
    修复mp.quduopai.cn上传不了的问题


2018.3.28
    修复hook url接口的内存泄漏问题


2018.3.27
    修复http://demo.dtcms.net/admin/index.aspx显示不全问题
    修复jsToString对int型js值返回空的问题
    修复devtools编辑html时候崩溃的问题


2018.3.23
    修复非透明窗口嵌入透明窗口会黑屏的问题。原因是强制根据GetWindowLongPtr返回值走非透明窗口逻辑了
    实现-webkit-app-region: drag;逻辑


2018.3.21
    修复jsToTempString不能转换Object的问题
    修复非分层窗口嵌入分层窗口会出现黑屏的问题


2018.3.18
    修复拖拽文字的小bug


2018.3.17
    修复苹果开发者网站因为Content-type字段的问题无法访问的bug
    修复jsCall只能调用window对象上的function的bug
    修复cookie.dat可能被清空的bug


2018.3.13
    修复来疯直播无法播放的bug
    修复www.wosowoso.com/flash/flash/7908.htm动画有残影的问题
    修复下拉框抢焦点问题
    修复wkeGetZoomFactor不准的问题


2018.3.8
    修复拖拽可能的崩溃


2018.3.6
    修复cookie路径可能出现乱码的bug
    修复electron模式无法启动的bug


2018.3.5
    修复上个版本修改导致的input输入卡死的bug
    修复cookie路径设置不生效的bug


2018.3.1
    修复vscode在xp下中文路径运行不了的bug


2018.2.27
    修复cef模式下拖拽崩溃的bug
    增加electron.exe以及vscode测试例子


2018.2.24
    增加拖拽功能,目前只支持拖拽文字


2018.2.23
    修复wkeLoadURL加载本地文件时无法触发文件系统回调的bug


2018.2.18
    增加右键菜单功能
    修复devtools不能使用控制台执行命令的bug


2018.2.15
    增加devtools功能。开启方式是:wkeSetDebugConfig(m_wkeView, "showDevTools", "E:/mycode/miniblink49/trunk/third_party/WebKit/Source/devtools/front_end/inspector.html(utf8编码)");


2018.2.9
    增加wkeSetDragEnable接口,可以关闭拖拽


2018.2.7
    优化内存占用问题,多次跳转页面也能回收内存
    增加wkeOnMouseOverUrlChanged接口


2018.2.5
    增加wkeSetNpapiPluginsEnabled、wkeSetHeadlessEnabled、wkeSetTouchEnabled接口


2018.2.4
    增加window.XMLSerializer能力,修复了网易163邮箱弹参数错误的提示


2018.2.2
    增加inptu的File.path成员变量,方便获取真实路径
    修复jsGetAt等接口没有实现的bug


2018.2.1
    修复动网论坛头像卡显示不出来的bug
    修复https://m.lehuipay.com/login二维码显示不了的bug
    修复shihuizhu.net上传不了图片的bug
    修复24号版本因为优化渲染模式导致分层窗口绘制不正常的bug
    修复<input id="localfile-lexicon" style="width:100%;" type="file"/>这种写法产生乱码的bug
    修复汤不热点击用户头像崩溃的bug
    修复http://www.ygdy8.net/html/gndy ... .html点击ftp链接,在安装迅雷机器上崩溃的bug
    修复上传按钮的小bug


2018.1.28
    修复http://sandbox.runjs.cn/show/pcohsrh0出现的多余线条


2018.1.26
    修复http://www.layui.com/demo/tab.html使用woff字体导致乱码的bug,且增加woff2字体的支持
    修复上个版本渲染模式的修改导致的黑屏的bug
    修复下拉框黑屏的bug


2018.1.25
    改动下拉框的hover态字体颜色


2018.1.24
    修复钉钉验证码颜色不对的bug
    修复github issue的title取不到的bug
    修改wke接口渲染模式,极大增加了帧率


2018.1.22
    修复wkePostUrl的崩溃


2018.1.21
    修复火币网登录不了的bug
    修复中文路径点击herf=#会刷新的bug
    修复拼多多登录过程中的wss协议一直没返回的bug


2018.1.19
    修复斗鱼视频播放不了的bug
    修复某些网站出现异常色块的bug
    修复斗鱼视频出现的崩溃


2018.1.18
    增加wkexe的内存回收按钮,方便测试
    加强内存回收逻辑,可及时回收长页面的高内存占用


2018.1.17
    增加文件上传功能
    修复https://itunesconnect.apple.com上传文件导致崩溃的bug,以及上传文件后文件被占用的bug
    修复火币网k线显示不了的bug


2018.1.14
    修改头文件,把动态加载放入头文件中,以后exe引入dll只需include头文件即可,无需lib
    增加wkeSetCookie,cookie格式必须是:Set-cookie: PRODUCTINFO=webxpress; domain=.fidelity.com; path=/; secure
    修复下拉框在切换到别的界面时不消失,以及容易失去响应的bug


2018.1.12
    修复zzz提到的test2_jq页面显示不正常的bug,原因是没实现setBackfaceVisibility的3d逻辑




2018.1.10
    增加wkeRunJsByFrame接口,可以在wkeOnDocumentReady2回调里注入js执行
    修复按ctrl+shift+right后百度新闻卡死的问题


2018.1.9
    增加ico格式解析,以及自定义光标的功能
    增加NotAllowed等一系列样式
    修复百度新闻偶尔出现的不正常色块的问题
    增加wkexe响应resize事件的能力


2018.1.8
    修复https://8894f.com/打不开的问题。原因是此网站使用的是http1.1,但响应头却是1.0。curl识别后发送了1.0协议,此网站却不支持


2018.1.6
    增加wkeNetOnResponse和wkeNetGetMIMEType接口,可以捕获mime
    修复多选select框无效的问题


2018.1.4
    修复上个版本出现的各种渲染问题
    增加了cef模式的cookie增删改api
    增加wkeSetLocalStorageFullPath接口,设置LocalStorage的全路径
    增加application/zip的下载识别


2018.1.1
    修复dns.toaone.com点击感叹号出现的花屏和残留线
    修复QQ拖动滑块验证码页面性能卡慢问题


2017.12.31
    修复禁用跨域检查后,fetch里设置referrer导致的断言错误
    优化QQ拖动方式验证码网页的拖动性能和效果
    修复https://cibmcha.swiftpass.cn/点击右上角的帮助显示空白网页的bug
    修复wkeGetUrl获取网址在网页有跳转情况下不对的bug


2017.12.29
    修复内存字符串在exe有中文路径适加载不了的bug
    修复两处不必要的性能开销,提升了绘制流畅度


2017.12.28
    增加MessageChannel能力,从而修复了https://m.baidu.com/sf/vsearch ... %3Dxx卡死的bug
    修复了https代理模式下xhr的status值不对的bug
    修复了百度图片点下载没回调wke的下载回调的bug


2017.12.25
    修复了https://wap.zol.com.cn/list/10 ... apSub崩溃的bug


2017.12.24
    加强了fetch的功能,可以在header里设置referer
    修复页面被关闭再打开后,下拉框无法弹出的bug
    修复加载内存字符串,里面使用的本地文件路径无法加载的问题
    改进了wkexe的界面


2017.12.22
    使用新的渲染算法,优化了loading.io加载页面的渲染性能


2017.12.17
    修复了https代理的一些bug
    加长了超时时间


2017.12.16
    修复了www.huobi.pro/zh-cn/xrp_usdt/exchange/打不开的问题。原因是v8版本比较老,而且let等关键字必须在严格模式使用。
    修复了www.huobi.pro使用导致的崩溃和取不到FileReader大小的bug
    修复wkePerformCookieCommand清理不了cookie的bug


2017.12.15
    调整了帧率
    修复了time_t和cookie的bug导致shome.ouchn.cn登录不了的问题


2017.12.12
    修复bilibili网站崩溃和播放不了的bug
    修复模糊滤镜做缓动动画无效的bug
    增加三个cookie相关的wke接口


2017.12.6
    修复vlc插件崩溃和显示不正常的bug
    修复容易全选的bug


2017.12.5
    修复bilibili的flash播放不了的bug。原因是video.min.js用了window.performance


2017.12.4
    修复了http://so.news.cn/#search/0/%E6%90%9C%E7%B4%A2/1不停刷新的bug


2017.12.2
    修复了更新curl后导致pan.toaone.com和www.xinhuanet.com 打不开的bug(kyozy反馈)


2017.11.30
    更新curl,修复了部分系统打不开百度和hao123的bug(kyozy反馈)


2017.11.28
    修复了某些系统https打不开的bug
    修复了bing切换到国际版就切换不回来的bug


2017.11.25
    修复了m.baidu.com崩溃的bug。


2017.11.24
    修复了http://zui.sexy滚动条绘制问题
    修改了选中文本背景色
    修改了滚动条样式
    增加了post blob的支持后,修复了知乎网不能点赞的bug
    修改了tip的样式,以及显示隐藏的体验
    修复wkeLoadHTML后调用wkeGoBack导致崩溃的bug


2017.11.20
    修复了local storage用不了的bug


2017.11.18
    修复了css路径加载bug、中文路径bug(宝宝抱抱反馈)
    修复了amd机器上sse3指令不识别的bug(kyozy反馈)
    修复一些小断言错误
    修复窗口过小时候的崩溃


2017.11.15
    修复了使用hook情况下,上次加入的网络优化代码导致的资源加载不成功的bug


2017.11.13
    修复了js绑定回调中调用wkeResize导致js环境缓存被清空的bug
    大幅修改了底层线程机制,增加优先级排序,加载任务会优先执行
    任务加载时会优先检查是否本地不存在文件,是的话优先拒绝,提速加载速度


2017.11.8
    修复了bilibili会卡的bug(Games反馈)
    修复了http://chrome.360.cn/testbrowser.html会崩溃的bug(9844201<rtkiss@126.com提供)
    修复了jsFunction绑定的回调里创建窗口导致js缓存对象被清空的bug(我是雪梨(61297202) 反馈)


2017.11.7
    修复了http://cul.qq.com/a/20160306/044906.htm会乱码的bug
    修复了剪切板复制可能不成功的bug(狂野的风提供)
    修复了剪切板复制时没清空上次内容的bug


2017.11.2
    修复了http://lpl.qq.com/es/live.shtml页面打开播放不了flash的bug


2017.10.27
    修复了wkeGetViewDC不支持透明窗口的bug
    改进了resize时刻的效率问题
    增加wkeSetCookieJarFullPath、wkeOnDocumentReady2两个api


2017.10.26
    修复了不支持透明窗口的bug


2017.10.20
    继续修复wke bind js相关的几个bug(海绵宝宝反馈)
    增加禁止页面跳转到新窗口的wke api


2017.10.19
    修复wke bind js相关的几个bug(海绵宝宝反馈)。


2017.10.19
    增加透明窗口支持


2017.10.18
    增加wkeSeCspCheckEnable、wkeSetViewNetInterface接口,一个用来关闭跨域检查,一个用来设置绑定网卡
    修复不支持双击事件的bug


2017.10.16
    修复用微博登录不了知乎的bug。原因是重定向请求没清空之前的响应头


2017.10.16
    修复一处下拉框退出时候的崩溃
    增加fetch api,可以正常使用知乎网


2017.10.12
    修复mmlai8@qq.com提到的http://m.ji7.com/ 图标显示不出来的bug。原因是chromium老版本的bug。见https://chromium.googlesource. ... %23F9
    修复前进后退不对的bug


2017.10.10
    修复Sanwer提到的打开hao123下属页面会卡的bug。原因是页面长度太长,TileGird管理算法效率太低


2017.10.06
    增加了web worker的支持,方便打开知乎专栏页面
    修复wke退出时可能的崩溃


2017.10.04
    修复了打开优酷提示无权的客户端的bug
    修复了打开www.teambition.com/projects的新手引导非常慢的问题
    修复某些字符串空指针导致的crash


2017.9.26
    修复了打开土豆会崩溃的bug


2017.9.25
    实现了wkeSetFileSystem接口


2017.9.22
    修复blob可能的崩溃


2017.9.24
    修复flash无窗口模式绘制位置不正常的bug
    修复一处wke模式读取中文路径可能崩溃的bug
    修复input框焦点矩形高亮不显示的bug


2017.9.18
    增加对中文路径的支持
    修复flash windowless模式不支持的bug
    修复一处退出时候可能的断言错误


2017.9.13
    增加wke的alert回调
    增加blob支持


2017.9.5
    修复大量wke接口方面的bug
    新增wkeJsBindFunction等接口,和老接口区别是不再使用fast call调用协议


2017.8.28
    修复js回调native函数里如果弹出模态对话框导致消息重入而崩溃的bug


2017.8.25
    修复下拉框的焦点导致别的窗口无法输入的bug。
    修复一处无关紧要的断言问题


2017.8.22
    增加下拉框的滚轮、键盘操作,修复下拉框滚动不流程的bug


2017.8.21
    修复下拉框的各种bug

2017.8.16
    修复了弹出下拉框导致卡死的bug
    修复了flash崩溃的bug
    修复了www.teambition.com里页面hover上去效果不对的bug


2017.8.15
    修复了zzz提出的3d效果边缘被剪切的bug 查看全部
最新下载地址见:https://blog.csdn.net/weolar/a ... 46895

-----------------------

以往更新历史:
 
2018.5.2
    修复来疯直播和腾讯视频播放位置以及右键菜单位置不对的问题
    修复local storage存储中文字符串会乱码的问题

2018.4.30    增强wkeGetCaretRect,当焦点元素不可编辑时,返回的高为0


2018.4.28
    增加禁用鼠标消息的接口


2018.4.26
    修复local storage保存到本地不生效的问题
    修复某些网站无法显示验证码的问题
    修复wkeIsLoadingCompleted等接口在reload后不准的问题
    修复flash右键菜单位置不对的问题


2018.4.24
    修复百度地图可能出现黑屏的问题
    修复gojs库无法拖拽的问题


2018.4.22
    修复开启devtools时,点击vue-route的demo的about按钮,无法跳转的问题


2018.4.20
    修复某些上传问题


2018.4.19
    修复某在线聊天的对话框里图片上传不了的问题
    修复同步ajax请求下url end回调没被调用的问题


2018.4.16
    修复一处不停刷新百度会崩溃问题。原因是messageport对象被提前回收了
    修复url 重定向导致load begin回调漏掉的问题
    修复baidu.v.ifeng.com/kan/aB0jU?fr=v.baidu.com/的flash右键菜单位置不对的bug
    修复v8_5_7版本无法使用devtools的问题
    修复中文路径无法使用devtools的问题


2018.4.13
    修复百度网盘无法上传的问题
    修复js绑定bool值返回的问题
    增加void wkeSetDeviceParameter(wkeWebView webView, const char* device, const char* paramStr, int paramInt, float paramFloat)接口,方便模拟各种设备
    修复https://toutiao.eastday.com/?qid=qid02761网站因为没有mime导致无法加载的问题


2018.4.12
    修复前进后退问题
    修复某些网站验证码无法显示问题
    修复百度识图无法上传问题


2018.4.2
    修改安全策略,允许wkeRunJS里的js代码浏览新url


2018.4.1
    增加wkeOnWillMediaLoad接口,方便模拟video等元素
    增加jsValue jsArrayBuffer(jsExecState es, char * buffer, size_t size);接口
    修复pushState事件,以及device.cx-j.cn/v1/list.html?nav=eHliODUxQHNpbmEuY29t&pav=ODIxMTE5&mode=1会意外后退的问题


2018.3.30
    修复mp.quduopai.cn上传不了的问题


2018.3.28
    修复hook url接口的内存泄漏问题


2018.3.27
    修复http://demo.dtcms.net/admin/index.aspx显示不全问题
    修复jsToString对int型js值返回空的问题
    修复devtools编辑html时候崩溃的问题


2018.3.23
    修复非透明窗口嵌入透明窗口会黑屏的问题。原因是强制根据GetWindowLongPtr返回值走非透明窗口逻辑了
    实现-webkit-app-region: drag;逻辑


2018.3.21
    修复jsToTempString不能转换Object的问题
    修复非分层窗口嵌入分层窗口会出现黑屏的问题


2018.3.18
    修复拖拽文字的小bug


2018.3.17
    修复苹果开发者网站因为Content-type字段的问题无法访问的bug
    修复jsCall只能调用window对象上的function的bug
    修复cookie.dat可能被清空的bug


2018.3.13
    修复来疯直播无法播放的bug
    修复www.wosowoso.com/flash/flash/7908.htm动画有残影的问题
    修复下拉框抢焦点问题
    修复wkeGetZoomFactor不准的问题


2018.3.8
    修复拖拽可能的崩溃


2018.3.6
    修复cookie路径可能出现乱码的bug
    修复electron模式无法启动的bug


2018.3.5
    修复上个版本修改导致的input输入卡死的bug
    修复cookie路径设置不生效的bug


2018.3.1
    修复vscode在xp下中文路径运行不了的bug


2018.2.27
    修复cef模式下拖拽崩溃的bug
    增加electron.exe以及vscode测试例子


2018.2.24
    增加拖拽功能,目前只支持拖拽文字


2018.2.23
    修复wkeLoadURL加载本地文件时无法触发文件系统回调的bug


2018.2.18
    增加右键菜单功能
    修复devtools不能使用控制台执行命令的bug


2018.2.15
    增加devtools功能。开启方式是:wkeSetDebugConfig(m_wkeView, "showDevTools", "E:/mycode/miniblink49/trunk/third_party/WebKit/Source/devtools/front_end/inspector.html(utf8编码)");


2018.2.9
    增加wkeSetDragEnable接口,可以关闭拖拽


2018.2.7
    优化内存占用问题,多次跳转页面也能回收内存
    增加wkeOnMouseOverUrlChanged接口


2018.2.5
    增加wkeSetNpapiPluginsEnabled、wkeSetHeadlessEnabled、wkeSetTouchEnabled接口


2018.2.4
    增加window.XMLSerializer能力,修复了网易163邮箱弹参数错误的提示


2018.2.2
    增加inptu的File.path成员变量,方便获取真实路径
    修复jsGetAt等接口没有实现的bug


2018.2.1
    修复动网论坛头像卡显示不出来的bug
    修复https://m.lehuipay.com/login二维码显示不了的bug
    修复shihuizhu.net上传不了图片的bug
    修复24号版本因为优化渲染模式导致分层窗口绘制不正常的bug
    修复<input id="localfile-lexicon" style="width:100%;" type="file"/>这种写法产生乱码的bug
    修复汤不热点击用户头像崩溃的bug
    修复http://www.ygdy8.net/html/gndy ... .html点击ftp链接,在安装迅雷机器上崩溃的bug
    修复上传按钮的小bug


2018.1.28
    修复http://sandbox.runjs.cn/show/pcohsrh0出现的多余线条


2018.1.26
    修复http://www.layui.com/demo/tab.html使用woff字体导致乱码的bug,且增加woff2字体的支持
    修复上个版本渲染模式的修改导致的黑屏的bug
    修复下拉框黑屏的bug


2018.1.25
    改动下拉框的hover态字体颜色


2018.1.24
    修复钉钉验证码颜色不对的bug
    修复github issue的title取不到的bug
    修改wke接口渲染模式,极大增加了帧率


2018.1.22
    修复wkePostUrl的崩溃


2018.1.21
    修复火币网登录不了的bug
    修复中文路径点击herf=#会刷新的bug
    修复拼多多登录过程中的wss协议一直没返回的bug


2018.1.19
    修复斗鱼视频播放不了的bug
    修复某些网站出现异常色块的bug
    修复斗鱼视频出现的崩溃


2018.1.18
    增加wkexe的内存回收按钮,方便测试
    加强内存回收逻辑,可及时回收长页面的高内存占用


2018.1.17
    增加文件上传功能
    修复https://itunesconnect.apple.com上传文件导致崩溃的bug,以及上传文件后文件被占用的bug
    修复火币网k线显示不了的bug


2018.1.14
    修改头文件,把动态加载放入头文件中,以后exe引入dll只需include头文件即可,无需lib
    增加wkeSetCookie,cookie格式必须是:Set-cookie: PRODUCTINFO=webxpress; domain=.fidelity.com; path=/; secure
    修复下拉框在切换到别的界面时不消失,以及容易失去响应的bug


2018.1.12
    修复zzz提到的test2_jq页面显示不正常的bug,原因是没实现setBackfaceVisibility的3d逻辑




2018.1.10
    增加wkeRunJsByFrame接口,可以在wkeOnDocumentReady2回调里注入js执行
    修复按ctrl+shift+right后百度新闻卡死的问题


2018.1.9
    增加ico格式解析,以及自定义光标的功能
    增加NotAllowed等一系列样式
    修复百度新闻偶尔出现的不正常色块的问题
    增加wkexe响应resize事件的能力


2018.1.8
    修复https://8894f.com/打不开的问题。原因是此网站使用的是http1.1,但响应头却是1.0。curl识别后发送了1.0协议,此网站却不支持


2018.1.6
    增加wkeNetOnResponse和wkeNetGetMIMEType接口,可以捕获mime
    修复多选select框无效的问题


2018.1.4
    修复上个版本出现的各种渲染问题
    增加了cef模式的cookie增删改api
    增加wkeSetLocalStorageFullPath接口,设置LocalStorage的全路径
    增加application/zip的下载识别


2018.1.1
    修复dns.toaone.com点击感叹号出现的花屏和残留线
    修复QQ拖动滑块验证码页面性能卡慢问题


2017.12.31
    修复禁用跨域检查后,fetch里设置referrer导致的断言错误
    优化QQ拖动方式验证码网页的拖动性能和效果
    修复https://cibmcha.swiftpass.cn/点击右上角的帮助显示空白网页的bug
    修复wkeGetUrl获取网址在网页有跳转情况下不对的bug


2017.12.29
    修复内存字符串在exe有中文路径适加载不了的bug
    修复两处不必要的性能开销,提升了绘制流畅度


2017.12.28
    增加MessageChannel能力,从而修复了https://m.baidu.com/sf/vsearch ... %3Dxx卡死的bug
    修复了https代理模式下xhr的status值不对的bug
    修复了百度图片点下载没回调wke的下载回调的bug


2017.12.25
    修复了https://wap.zol.com.cn/list/10 ... apSub崩溃的bug


2017.12.24
    加强了fetch的功能,可以在header里设置referer
    修复页面被关闭再打开后,下拉框无法弹出的bug
    修复加载内存字符串,里面使用的本地文件路径无法加载的问题
    改进了wkexe的界面


2017.12.22
    使用新的渲染算法,优化了loading.io加载页面的渲染性能


2017.12.17
    修复了https代理的一些bug
    加长了超时时间


2017.12.16
    修复了www.huobi.pro/zh-cn/xrp_usdt/exchange/打不开的问题。原因是v8版本比较老,而且let等关键字必须在严格模式使用。
    修复了www.huobi.pro使用导致的崩溃和取不到FileReader大小的bug
    修复wkePerformCookieCommand清理不了cookie的bug


2017.12.15
    调整了帧率
    修复了time_t和cookie的bug导致shome.ouchn.cn登录不了的问题


2017.12.12
    修复bilibili网站崩溃和播放不了的bug
    修复模糊滤镜做缓动动画无效的bug
    增加三个cookie相关的wke接口


2017.12.6
    修复vlc插件崩溃和显示不正常的bug
    修复容易全选的bug


2017.12.5
    修复bilibili的flash播放不了的bug。原因是video.min.js用了window.performance


2017.12.4
    修复了http://so.news.cn/#search/0/%E6%90%9C%E7%B4%A2/1不停刷新的bug


2017.12.2
    修复了更新curl后导致pan.toaone.com和www.xinhuanet.com 打不开的bug(kyozy反馈)


2017.11.30
    更新curl,修复了部分系统打不开百度和hao123的bug(kyozy反馈)


2017.11.28
    修复了某些系统https打不开的bug
    修复了bing切换到国际版就切换不回来的bug


2017.11.25
    修复了m.baidu.com崩溃的bug。


2017.11.24
    修复了http://zui.sexy滚动条绘制问题
    修改了选中文本背景色
    修改了滚动条样式
    增加了post blob的支持后,修复了知乎网不能点赞的bug
    修改了tip的样式,以及显示隐藏的体验
    修复wkeLoadHTML后调用wkeGoBack导致崩溃的bug


2017.11.20
    修复了local storage用不了的bug


2017.11.18
    修复了css路径加载bug、中文路径bug(宝宝抱抱反馈)
    修复了amd机器上sse3指令不识别的bug(kyozy反馈)
    修复一些小断言错误
    修复窗口过小时候的崩溃


2017.11.15
    修复了使用hook情况下,上次加入的网络优化代码导致的资源加载不成功的bug


2017.11.13
    修复了js绑定回调中调用wkeResize导致js环境缓存被清空的bug
    大幅修改了底层线程机制,增加优先级排序,加载任务会优先执行
    任务加载时会优先检查是否本地不存在文件,是的话优先拒绝,提速加载速度


2017.11.8
    修复了bilibili会卡的bug(Games反馈)
    修复了http://chrome.360.cn/testbrowser.html会崩溃的bug(9844201<rtkiss@126.com提供)
    修复了jsFunction绑定的回调里创建窗口导致js缓存对象被清空的bug(我是雪梨(61297202) 反馈)


2017.11.7
    修复了http://cul.qq.com/a/20160306/044906.htm会乱码的bug
    修复了剪切板复制可能不成功的bug(狂野的风提供)
    修复了剪切板复制时没清空上次内容的bug


2017.11.2
    修复了http://lpl.qq.com/es/live.shtml页面打开播放不了flash的bug


2017.10.27
    修复了wkeGetViewDC不支持透明窗口的bug
    改进了resize时刻的效率问题
    增加wkeSetCookieJarFullPath、wkeOnDocumentReady2两个api


2017.10.26
    修复了不支持透明窗口的bug


2017.10.20
    继续修复wke bind js相关的几个bug(海绵宝宝反馈)
    增加禁止页面跳转到新窗口的wke api


2017.10.19
    修复wke bind js相关的几个bug(海绵宝宝反馈)。


2017.10.19
    增加透明窗口支持


2017.10.18
    增加wkeSeCspCheckEnable、wkeSetViewNetInterface接口,一个用来关闭跨域检查,一个用来设置绑定网卡
    修复不支持双击事件的bug


2017.10.16
    修复用微博登录不了知乎的bug。原因是重定向请求没清空之前的响应头


2017.10.16
    修复一处下拉框退出时候的崩溃
    增加fetch api,可以正常使用知乎网


2017.10.12
    修复mmlai8@qq.com提到的http://m.ji7.com/ 图标显示不出来的bug。原因是chromium老版本的bug。见https://chromium.googlesource. ... %23F9
    修复前进后退不对的bug


2017.10.10
    修复Sanwer提到的打开hao123下属页面会卡的bug。原因是页面长度太长,TileGird管理算法效率太低


2017.10.06
    增加了web worker的支持,方便打开知乎专栏页面
    修复wke退出时可能的崩溃


2017.10.04
    修复了打开优酷提示无权的客户端的bug
    修复了打开www.teambition.com/projects的新手引导非常慢的问题
    修复某些字符串空指针导致的crash


2017.9.26
    修复了打开土豆会崩溃的bug


2017.9.25
    实现了wkeSetFileSystem接口


2017.9.22
    修复blob可能的崩溃


2017.9.24
    修复flash无窗口模式绘制位置不正常的bug
    修复一处wke模式读取中文路径可能崩溃的bug
    修复input框焦点矩形高亮不显示的bug


2017.9.18
    增加对中文路径的支持
    修复flash windowless模式不支持的bug
    修复一处退出时候可能的断言错误


2017.9.13
    增加wke的alert回调
    增加blob支持


2017.9.5
    修复大量wke接口方面的bug
    新增wkeJsBindFunction等接口,和老接口区别是不再使用fast call调用协议


2017.8.28
    修复js回调native函数里如果弹出模态对话框导致消息重入而崩溃的bug


2017.8.25
    修复下拉框的焦点导致别的窗口无法输入的bug。
    修复一处无关紧要的断言问题


2017.8.22
    增加下拉框的滚轮、键盘操作,修复下拉框滚动不流程的bug


2017.8.21
    修复下拉框的各种bug

2017.8.16
    修复了弹出下拉框导致卡死的bug
    修复了flash崩溃的bug
    修复了www.teambition.com里页面hover上去效果不对的bug


2017.8.15
    修复了zzz提出的3d效果边缘被剪切的bug

跪求神僧编译下miniblink x64 dll

marscrazy 回复了问题 • 2 人关注 • 1 个回复 • 208 次浏览 • 2018-04-28 16:02 • 来自相关话题

淘宝登录界面不能调用npapi,不能一键登录。

tao 回复了问题 • 2 人关注 • 3 个回复 • 284 次浏览 • 2018-04-25 17:40 • 来自相关话题

GOJS的节点不能用鼠标拖动

回复

发起了问题 • 1 人关注 • 0 个回复 • 73 次浏览 • 2018-04-24 15:33 • 来自相关话题

登陆淘宝直通车后,页面不跳转,页面实际加载在 login_iframe 框架里了,看图

weolar 回复了问题 • 2 人关注 • 4 个回复 • 203 次浏览 • 2018-04-23 18:51 • 来自相关话题

MB加载支付宝安全控件会崩溃

weolar 回复了问题 • 2 人关注 • 3 个回复 • 484 次浏览 • 2018-04-16 10:44 • 来自相关话题