开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 97301|回复: 244
收起左侧

[产品发布] 精易Web浏览器支持库(miniblink内核)-正式版发布 (2019年7月10日更新)

     关闭 [复制链接]
发表于 2019-7-10 20:42:06 | 显示全部楼层 |阅读模式   广东省揭阳市
本帖最后由 项目部006 于 2020-1-25 19:22 编辑

本帖已关闭, 请移步到 https://bbs.125.la/thread-14522761-1-1.html










广大易友们!

    精易Web浏览器支持库易语言https://bbs.125.la/thread-14192959-1-1.html
    发布至今,已经有近一个年头。在这一年中,首先感谢大家的支持,也感谢大家对开发和测试工作作出的反馈和贡献。
    有了你们支持库才能做的更好,为广大的易友的生态环境创建更好的明天。
    易语言在开发支持库上面,如果涉及到一些指针、内存调用等方面,则会显示出劣势,软件崩溃问题、卡死问题无法得以解决。
    故此,在易语言版测试后不久,便决定要使用C语言重写支持库。

    经过紧锣密鼓的筹划与前期准备工作,支持库开发正式开始,在这过程中,感谢开发人员克服困难重重,披荆斩棘。

    本支持库使用的Web浏览器内核来自于 Miniblink , 该作者一直在维持该项目的更新不少年头了, 因为有了他默默无闻的付出, 大家才能这么愉快的使用。
    支持库将持续更新,为大家提供最好用,最高效的易语言wke内核浏览器。


下面:一起为weolar 、zero点赞,感谢他们的辛苦付出
该项目是开源的,欲了解该技术核心细节的 可以访问该地址:https://github.com/weolar/miniblink49    获取内核源码
LICENSE : (由于篇幅较长,帖子内容显示有限,采用连接形式附上)https://raw.githubusercontent.com/weolar/miniblink49/master/LICENSE





重写支持库说明:
本次更新完全使用C语言重写,相比易语言,稳定性提升速度提升C语言原生调用,带来原汁原味的快感。
【C语言支持库的好处】

        原生调用,方法、函数、类型等即得即用,无需转换数据类型及读写内存。
        指针、内存、回调统统搞定
        cdcel与stdcall直接调用,无需自己实现转换,稳定性+100%
        使用易语言官方提供的、有保障的头文件,错误率<0.1%
        直接编译生成动态库fne,静态库lib,无需转换,安全稳定
        超过数千行的源代码,完整重构
        对原支持库的逻辑和结构进行优化


总结起来三个字: 稳     快     好

--------------------------------------------------------------------
miniblink内核dll更新迭代次数:
20次以上(距离上次易语言正式版支持库发布)
累计BUG修复约:110+项
累计功能性改进约:170+项

再次感谢miniblink作者的更新维护。

【性能提升】
        启动速度提升:30%以上,数据经过打开到加载完毕时间统计获得。
        操作响应速度提升明显 在不特别复杂的网页逻辑下,响应速度提升明显。
        动画速度与显示效果提升,使效果更加平滑。 具体可以参考组合框、颜色选择器等组件。


------------------分割线----------------
【使用说明】
当前版本为正式版,当前已经完全支持如下内容!
1. 浏览器部分。
2. javascript部分。
3. 特殊功能部分。
4. wke填表部分。
5.Ajax部分。
==
将wke.fne放入到【易语言目录\lib\】文件夹中
将wke_static.lib放入到【易语言目录\static_lib\】文件夹中
将node.dll放入到【易语言目录\】文件夹中
将node.dll放入到【易语言目录\lib】文件夹中
=====================

请注意: 该版本与旧版(原2018年7月版)可以做到直接替换,但请注意:由于支持库结构不同,窗口的通用消息无法直接使用,具体用法请看例程。
本支持库将可以直接与原支持库替换,故目前直接与原支持库使用相同名字。


请确认已经仔细阅读过【使用说明】后进行下载:
下载地址:

【反馈渠道】
1. 在本帖内回复。
2. 在群内直接@项目部006回复。
①群:已满
②群:已满
③群:922810630(点击即加群)


【常见问题, 请仔细查看, 您遇到的所谓bug, 很多都在这有说明, 后期会慢慢增加常见错误】

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

Q. 为什么无法设置cookie目录和缓存目录?

A. 设置目录是调用node.dll的接口, node.dll中并没有创建目录, 所以设置目录前需要先确定目录是否存在, 不存在则需要自己创建

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

Q. 为什么设置了多个cookie目录了, 运行后只设置了最后一个目录? 打开多个网页cookie还是会共用?

A. 精易web支持库封装的是开源版的miniblink, 开源版的版本是不支持多文档多cookie的, 所以无法达到一个网页一个cookie
    不管设置了几个cookie目录, node.dll都只会使用最后一个目录来作为cookie目录
    如果需要多文档多cookie的, 可以使用多进程的方式来实现(后期官方可能会出单独的例程)

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

Q. 为什么cookie无法使用?

A. 请使用"精易Web浏览器支持库"里 获取cookie 的返回值来进行设置cookie
    或者请调用 设置cookie_CURL() 来进行设置, 这个是调用node.dll的wkeSetCookie接口, 不做任何修改(1.3.1210后的版本增加)

Q. 为什么提示找不到dll命令? wke api not found

A. 请将"node.dll" 这个文件放到易语言根目录,易语言/lib 目录下,调试时会从这两个文件夹里寻找"node.dll"文件,"这两个目录必须要要node.dll"
    如果是编译的版本,请将"node.dll" 存放到你编译好的程序的目录下, 或者存放到指定目录, 然后在程序中设置路径

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

Q. 为什么我设置dll路径后还是提示无法找到命令? wke api not found

A. 如果您的node.dll不是存放在程序的目录下,那么可以使用 wke_设置dll路径("node.dll完整路径") 来设置node.dll的路径
    设置的前提是,必须在窗口载入完毕之前设置, 如果在 __启动窗口_创建完毕  这个事件下设置是无效的
    因为触发 __启动窗口_创建完毕 这个事件之前就已经调用了 node.dll的命令了,所以还没有设置的时候就已经提示错误了
正确的设置方法:
    把 "_启动窗口" 改为其他名字, 比如改成 "窗口_主窗口"
    新建一个子程序,子程序名字为 "_启动子程序",这个子程序有一个整数型的返回值
    然后在 "_启动子程序" 下第一行代码写上 wke_设置dll路径("你的node.dll完整路径")
    最后在调用 载入(窗口_主窗口,,假)
这才是正确调用 wke_设置dll路径() 的方法

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

Q. 为什么不能在多线程中调用

A. 精易web支持库封装的是开源版的miniblink, 开源版的版本是禁止跨线程调用的
    如果确实需要多线程调用组件的,可以将调用代码放入到 _标签_反馈事件中, 再通过反馈事件进行调用wke

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

Q. 为什么无法静态编译?

A. 请把wke_static.lib 文件放到易语言 static_lib 目录下在进行编译
    如果还是出错,请把其他支持库取消选择后重试
    如果通过上述解决方案还是无法静态编译,请将易语言输出的 错误信息,出错系统版本,易语言版本,易语言核心库版本等信息在帖子中回复,或者在群内@项目部006
注意: 请勿将支持库(wke.fne)或者静态库(wke_static.lib)文件名修改

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

Q. 为什么我取回的网页源码是乱码?

A. 因为考虑到网页中可能会有一些gb2312无法显示的字符,所以现在的返回文本都是以utf8的形式返回
    如果是按gb2312的形式返回,那么这些无法显示的字符会变成问号"?",且无法逆转,而utf8解决了这一个问题
    以gb2312的形式来显示utf8就会出现乱码,精易web支持库已经提供了几个常用的编码转换,大家可以调用来转换

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

Q. 为什么 Url载入结束 事件没有触发?

A. 触发 url载入结束 事件需要在 Url载入开始 下hook网络请求,而这个hook会占用比较多的资源
    为了使得程序能更稳定的运行,我们在内部把这个hook取消了
    如果需要触发Url载入结束,请在Url载入开始时,判断哪些网页需要触发Url载入结束,然后调用 特殊功能对象的 拦截网络请求(Job) 方法
    如果您想每个网页都触发 Url载入结束事件,那么在 Url载入开始事件下不判断Url地址直接调用 特殊功能.拦截网络请求(Job)
    这样每个url载入结束都会触发, 但是, 我们不建议您这么做
    详情请参考历程里的 url载入结束触发例子.e

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

Q. 为什么无法打开本地HTML文件?

A. 使用 精易Web浏览器.url = "本地HTML路径"  或者 精易Web浏览器.浏览网页("本地HTML路径") 是无法浏览的
    精易Web支持库中有提供了载入本地HTML或者内存HTML数据
    载入本地HTML文件请调用 精易Web浏览器.载入HTML文件("本地HTML文件")
    载入内存HTML数据请调用 精易Web浏览器..载入HTML文本("utf8 HTML文本")

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

如果你觉得本产品好用,给你的生活/工作/学习带来方便,请支持我们,购买 赞助会员 ,享有多项特权


点评

针对谷歌验证码无法点击识别通过的问题怎么解决   辽宁省沈阳市  发表于 2019-11-13 19:16
老崩溃啊。。。 打开源码不调试运行也经常崩溃。 调试运行的时候也不定时崩溃。 还有调试运行的时候有时候还能稳定操作运行十几分钟。 但是静态编译后一操作就立马崩溃。   江苏省盐城市  发表于 2019-11-6 20:24
既然重写了,为啥Cookies管理不修复呢,不能清空Cookies,或者单域名下Cookies清空功能也没有   广西壮族自治区北海市  发表于 2019-9-5 19:22
连续循环跳转网页,不定时崩溃,无法长时间稳定运行,不知道能修复不,如果修复好就完美了   湖北省孝感市  发表于 2019-8-25 09:22
点线程也不能用吗?   湖北省武汉市  发表于 2019-8-15 17:11
很好很强大,但是要反馈问题。取消选中框架还是没有封装进去   广西壮族自治区南宁市  发表于 2019-7-19 16:44
很好很强大,但是要反馈问题。取消选中框架还是没有封装进去。   湖北省潜江市  发表于 2019-7-11 23:44

评分

参与人数 19好评 +14 精币 +24 收起 理由
丿夜曲 + 1 + 1 感谢分享,很给力!~
Sth + 1 + 2 COOKIE相关命令无效望修复
jinge + 1 感谢分享,很给力!~
SunJIN + 1 支持开源~!感谢分享
yk125 + 1 其他功能都和很强大,目前发现两个BUG 1、带端口的网站是不是打不开啊 www.
Kaingryin + 1 + 2 新技能已get√
不可胜言 + 1 + 1 支持开源~!感谢分享
532060205 + 1 支持开源~!感谢分享
cosset + 1 + 1 感谢分享,很给力!~
yichen0802 + 1 新技能已get√
Y罢不能 + 1 + 3 支持开源~!感谢分享
蒲公英哭泣三毛 + 1 + 2 感谢分享,很给力!~
huozhi + 1 新技能已get√
小野野 + 1 + 1 感谢发布原创作品,精易因你更精彩!
h466163516 + 1 + 1 清空cookies问题解决了没有?可以用了吗?
MLone + 1 + 2 感谢发布原创作品,一定好好学习,天天向上
二毛2021 + 1 + 2 感谢分享,很给力!~
精易小鱼 + 1 + 1 支持开源~!感谢分享
代表太阳太阳你 + 1 感谢发布原创作品,精易因你更精彩!

查看全部评分

签到天数: 3 天

 楼主| 发表于 2020-1-13 16:52:10 | 显示全部楼层   广东省揭阳市
xuexueba 发表于 2020-1-13 16:48
为什么非要让node.dll这个文件放在根目录,就不能封装到支持库里面吗?这是一个很讨厌的做法,编译后的文件 ...

你可以放在其他目录, 在窗口载入之前设置路径
回复 支持 反对

使用道具 举报

结帖率:0% (0/4)
发表于 2020-1-13 16:48:30 | 显示全部楼层   贵州省贵阳市
为什么非要让node.dll这个文件放在根目录,就不能封装到支持库里面吗?这是一个很讨厌的做法,编译后的文件没有这个node.dll就无法运行,很无语
回复 支持 反对

使用道具 举报

签到天数: 3 天

 楼主| 发表于 2020-1-10 14:57:12 | 显示全部楼层   广东省揭阳市
hunterzeng 发表于 2020-1-10 14:32
易语言版本5.9 vs链接器2010 无法静态编译,怎么破

wke_static.lib(CwkeTBInfo.obj) : error LNK2001:  ...

下载新版本, 旧版本用了标准库的string类, 不是vc6链接器的会出错
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2020-1-10 14:32:58 | 显示全部楼层   广东省广州市
易语言版本5.9 vs链接器2010 无法静态编译,怎么破

wke_static.lib(CwkeTBInfo.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
wke_static.lib(WKECtrl.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
wke_static.lib(untshare.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
wke_static.lib(interface.obj) : error LNK2019: 无法解析的外部符号 "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ),该符号在函数 _wke_wke_DocSetTitle 中被引用
wke_static.lib(webkit.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
wke_static.lib(pch.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
wke_static.lib(Cajax.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
wke_static.lib(CwkeTBInfo.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xran(void)" (?_Xran@std@@YAXXZ)
wke_static.lib(WKECtrl.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xran(void)" (?_Xran@std@@YAXXZ)
wke_static.lib(interface.obj) : error LNK2019: 无法解析的外部符号 "void __cdecl std::_Xran(void)" (?_Xran@std@@YAXXZ),该符号在函数 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::substr(unsigned int,unsigned int)const " (?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z) 中被引用
wke_static.lib(webkit.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xran(void)" (?_Xran@std@@YAXXZ)
wke_static.lib(pch.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xran(void)" (?_Xran@std@@YAXXZ)
wke_static.lib(Cajax.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl std::_Xran(void)" (?_Xran@std@@YAXXZ)
D:\易语言\res.exe : fatal error LNK1120: 2 个无法解析的外部命令
静态连接失败
回复 支持 反对

使用道具 举报

签到天数: 3 天

 楼主| 发表于 2020-1-9 08:11:58 | 显示全部楼层   广东省揭阳市
tangneng123a 发表于 2020-1-8 18:33
开始静态链接...
LIBC.lib(crt0dat.obj) : error LNK2005: __cinit already defined in libcmt.lib(crt0da ...

你使用了什么支持库? 把你用到的支持库发一下
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2020-1-8 18:33:36 | 显示全部楼层   湖南省邵阳市
开始静态链接...
LIBC.lib(crt0dat.obj) : error LNK2005: __cinit already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: _exit already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __exit already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __cexit already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __c_exit already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __C_Exit_Done already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __C_Termination_Done already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __exitflag already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __wpgmptr already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __pgmptr already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___winitenv already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __wenviron already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___initenv already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __environ already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___wargv already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___argv already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: ___argc already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __winminor already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __winmajor already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __winver already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __osver already defined in libcmt.lib(crt0dat.obj)
LIBC.lib(crt0dat.obj) : error LNK2005: __umaskval already defined in libcmt.lib(crt0dat.obj)

点评

而且你用的是哪个版本的? 版本低的话就不要使用了, 很多低版本的问题都在高版本里解决了   广东省揭阳市   发表于 2020-1-9 08:12
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2020-1-8 18:31:08 | 显示全部楼层   湖南省邵阳市
C:\Users\Administrator\Desktop\_)QJQ$Q}FXCM$}8R5GUA05R.png 怎么破?@项目部006
回复 支持 反对

使用道具 举报

签到天数: 3 天

 楼主| 发表于 2020-1-6 18:05:29 | 显示全部楼层   广东省揭阳市
醉人 发表于 2020-1-5 17:55
@项目部006  大佬 这个怎么解决?

版本号以及重现方式
回复 支持 反对

使用道具 举报

签到天数: 3 天

 楼主| 发表于 2020-1-6 18:04:37 | 显示全部楼层   广东省揭阳市
醉人 发表于 2020-1-5 17:25
BUG严重啊...还不如之前的老版本,设置UA不管用.必须用命令设置.全是bug,然后源码设置好的UA和URL,源码关闭 ...

设置UA是有个bug, 已经定位到问题, 下个版本修复, url属性暂时没见有什么问题, 请提供一下支持库版本号和重现bug的方法
新版本稳定性是要比旧版本要好很多的, 说bug多的, 最好能提供使用的版本号,以及重现bug的方式, 我们这边好定位到问题并解决他
回复 支持 反对

使用道具 举报

发表于 2020-1-5 17:55:25 | 显示全部楼层   山东省青岛市
@项目部006 QQ截图20200105175315.jpg 大佬 这个怎么解决?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表