Buenas, aunque me parece muy buena idea usar gecko/xulrunner como motor web, he probado casi todos los navegadores que se pueden pensar, desde IE con artefactos para usar EDGEHTML, he usado xulrunner, chrome mediante CEF, y un largo etc de proyectos más pequeños, yo me decidi a usar un proyecto chino llamado miniblink, que supera en rendimiento e integracion a todos los que he probado, menos CEF, pero claro pesa muchisimo menos.
El codigo lleva en el repo desde hace unos meses:
https://bitbucket.org/pabloko/miniblinkams/src/master/
No lo he publicado por un motivo muy simple, a partir de el Q2 de este año, microsoft va a actualizar EDGE por la nueva version con motor Chromium, de hecho ya se puede bajar una beta desde aqui:
https://www.microsoftedgeinsider.com/es-es/
El tema es que microsoft antes de sacar este browser ya tiene un api simple para embeder este browser mediante la interfaz WebView2:
https://docs.microsoft.com/en-us/micros ... g/webview2
Por tanto, dentro de muy muy poco, cualquier windows 10 actualizado tendrá ya includo un motor de chromium que podremos usar en nuestros proyectos, eliminando la necesidad de BYOB (bring-your-own-browser)
En cuanto a mi version de miniblink, la integracion es mucho mas simple y facil, solo tiene una dll externa y no hace falta colocarla en un sitio como el root, y tiene interoperabilidad total de js con lua, es decir, si una funcion javascript retorna un array y se llama mediante api, retornara la misma info en una tabla lua y viceversa. Revisad el codigo que tiene chicha... por poner un ejemplo:
a = WKE.RunJS("Plugin1", "return {\"ayy\":\"lmao\"};") --ejecutamos js y cargamos su resultado (js object) que se convierte en lua table
Dialog.Message("", tostring(a["ayy"])) --escribe "lmao"
En cuanto a funciones y eventos:
WKE
Código: Seleccionar todo
{ "GetTitle", lua_wke_gettitle },
{ "CanGoBack", lua_wke_cangoback },
{ "GoBack", lua_wke_goback },
{ "Resize", lua_wke_resize },
{ "GetWidth", lua_wke_getwidth },
{ "GetHeight", lua_wke_getheight },
{ "GetContentWidth", lua_wke_getcontentwidth },
{ "GetContentHeight", lua_wke_getcontentheight },
{ "CanGoForward", lua_wke_cangoforward },
{ "GoForward", lua_wke_goforward },
{ "EditorSelectAll", lua_wke_selectall },
{ "EditorUnSelect", lua_wke_unselect },
{ "EditorCopy", lua_wke_copy },
{ "EditorCut", lua_wke_cut },
{ "EditorDelete", lua_wke_delete },
{ "EditorUndo", lua_wke_undo },
{ "EditorRedo", lua_wke_redo },
{ "GetCookie", lua_wke_getcookie },
{ "SetCookie", lua_wke_setcookie },
{ "SetMediaVolume", lua_wke_setmediavolume },
{ "GetMediaVolume", lua_wke_getmediavolume },
{ "FireMouseEvent", lua_wke_firemouseevent },
{ "FireMouseWheelEvent", lua_wke_firemousewheelevent },
{ "FireKeyUpEvent", lua_wke_firekeyupevent },
{ "FireKeyDownEvent", lua_wke_firedownevent },
{ "FireWindowsMessage", lua_wke_firewindowsmessage },
{ "SetFocus", lua_wke_setfous },
{ "KillFocus", lua_wke_killfocus },
{ "RunJS", lua_wke_runjs },
{ "GlobalExec", lua_wke_globalexec },
{ "Sleep", lua_wke_sleep },
{ "Wake", lua_wke_wake },
{ "IsAwake", lua_wke_isawake },
{ "SetZoomFactor", lua_wke_setzoomfactor },
{ "GetZoomFactor", lua_wke_getzoomfactor },
{ "SetEditable", lua_wke_seteditable },
{ "GetCursorInfoType", lua_wke_getcursorinfotype },
{ "GetWindowHandle", lua_wke_getwindowhandle },
{ "ShowWindow", lua_wke_showwindow },
{ "EnableWindow", lua_wke_enablewindow },
{ "MoveWindow", lua_wke_movewindow },
{ "SetDeviceParameter", lua_wke_setdeviceparameter },
{ "SetMouseEnabled", lua_wke_setmouseenabled },
{ "SetNavigationToNewWindowEnable", lua_wke_setnavigationtonewwindowenable },
{ "SetCspCheckEnable", lua_wke_setcspcheckenable },
{ "SetNpapiPluginsEnabled", lua_wke_setnpapipluginsenabled },
{ "SetDebugConfig", lua_wke_setdebugconfig },
{ "SetUserAgent", lua_wke_setuseragent },
{ "GetUserAgent", lua_wke_getuseragent },
{ "LoadURL", lua_wke_loadurl },
{ "LoadHTML", lua_wke_loadhtml },
{ "LoadHtmlWithBaseUrl", lua_wke_loadhtmlwithbaseurl },
{ "LoadFile", lua_wke_loadfile },
{ "GetURL", lua_wke_geturl },
{ "LuaEnabled", lua_wke_luaenabled },
{ "SetProxy", lua_wke_setproxy },
{ "BindFunction", lua_wke_jscallback },
{ "Stop", lua_wke_stop },
{ "Reload", lua_wke_stop },
{ "ShowDevTools", lua_wke_showdevtools },
{ "GetCookiesEnabled", lua_wke_getcookiesenabled },
{ "SetCookiesEnabled", lua_wke_setcookiesenabled },
{ "SetLocalStoragePath", lua_wke_lspath },
{ "SetCookiePath", lua_wke_cpath },
{ "EditorPaste", lua_wke_paste },
{ "BindGetter", lua_wke_jsgetter },
{ "BindSetter", lua_wke_jssetter },
JS
Código: Seleccionar todo
{ "ArgCount", lua_js_argcount },
{ "ArgType", lua_js_argtype },
{ "Arg", lua_js_arg },
{ "TypeOf", lua_js_typeof },
{ "Is", lua_js_is },
{ "To", lua_js_to },
{ "New", lua_js_new },
{ "GetArrayBuffer", lua_js_gab },
{ "Invoke", lua_js_invoke },
{ "Call", lua_js_call },
{ "Get", lua_js_get },
{ "Set", lua_js_set },
{ "GetAt", lua_js_getat },
{ "SetAt", lua_js_setat },
{ "GetKeys", lua_js_getkeys },
{ "GetLength", lua_js_getlength },
{ "SetLength", lua_js_setlength },
{ "Throw", lua_js_throw },
EVENTS
Código: Seleccionar todo
"OnPreload" ""
"OnConsole" "string e_Message, number e_Level, string e_SourceName, number e_SourceLine, string e_StackTrace"
"OnAlert" "string e_Msg"
"OnTitleChanged" "string e_Title"
"OnURLChanged" "string e_Url"
"OnConfirmBox" "string e_Msg, *bool e_Confirm"
"OnPromptBox" "string e_Msg, string e_DefaultResult, *string e_Result, *bool e_Cancel"
"OnNavigation" "string e_Url, number e_Type, *bool e_Confirm"
"OnDocumentReady" ""
"OnDownload" "string e_Url, *bool e_Confirm"
No tiene mucho sentido hacer release de este complemento porque pronto va a estar disponible edge con similar funcionalidad... pero si alguien lo quiere probar:
- HIDE: ON
- Hidebb Message Hidden Description