GoldenDict-ng(Linux/macOS/Windows)基于Qt5.15.2/Qt6.X版本

不好意思忘了传了:
大辞海修复版_js css_notwind_05.09.zip (3.8 KB)

应该是js的问题吧?不敢确定?有前端高手吗,望指教

console.log输出的问题,估计是这个原因

补充:1324106 - chromium - An open-source project to help move the web forward. - Monorail

但是innerText为空的问题,我还没弄清楚。
不过看到一个有趣的文章 The poor, misunderstood innerText — Perfection Kills

获取节点文本的推荐的用法是 e.textContent|| e.innerText
dacihai.7z (1.7 KB)

win7没有为所有用户安装字体菜单

Windows 7微软已经不支持了,很多最新的特性都不支持。你的问题是Windows 7Chromium的bug,无法解决。

感觉像是词典本身的功能。

你用的是xiaoyifang大侠最新哪个版本,我用的最新qt 6.3还是不行,图片词典链接点击没反应。

2 个赞

这个图标是极简风,也好看 只是好像跟顶部现有的其他UI图标不是很搭配。

1 个赞

以后有更好的,再换。

qt 6 webengine 运行更流畅,也有增加特性,不想再用回 qt 5的版本了

2 个赞

支持一下~感谢发布~

textContent和innerText获取到的结果有可能是不一样的。innerText会受到标签样式的影响,如果标签设置了不可见的话,比如display:none,读取到的就是空文本。如果标签是块级元素的是话还会读取到换行符,而textContent就不需要读取标签样式,性能也相对更好。

3 个赞

刚看到大侠修改的文件,完美解决!!太感谢了!

可能和版本有关,看了下大辞海的javascript脚本,原版写得有点复杂,问题也有可能出在使用innerHTML替换body的时候,innerHTML的替换并不是立即执行的,而innerText是读取的已渲染的文本,在body重新渲染的间隙,此时不止是label标签,任意标签的innerText读取到的字符串有可能都是空白。

测试了下,给proc(''label.juan_drop", …) 加上setTimeout延时运行,innerText可以读取到字符串。版本是QtWebEngine/6.3.0 Chrome/94.0.4606.126 Safari/537.36 GoldenDict/webengine。

setTimeout(function () {
    proc(
        'label.juan_drop',
        function (e) {
            e.innerHTML = '<span>' + e.innerText + '</span>';
        }
    );
}, 0);

PS 这种对body,label的嵌套替换,表现很奇怪,测试了83版本,又没有这个问题。版本是QtWebEngine/5.15.2 Chrome/83.0.4103.122 Safari/537.36 GoldenDict/webengine。

4 个赞

应该是这个原因

大辞海,修改后的css,是#998楼的吗?

1 个赞

除 最后一个,其他的基本可以显示了。

998楼的只是修复的js文件,css在这里:

2 个赞

多谢大大,太棒了!!

1 个赞

不用称我大大的

经过测试,这些词典除了OED都能显示出来了,不过还是有些问题,反馈如下:

Merriam-Webster词典样式异常(上一个GD qt 6.3版没问题):

https://www.merriam-webster.com/dictionary/%GDWORD%

Dictionary.com部分乱码:

https://www.dictionary.com/browse/%GDWORD%

朗文词典乱码:

https://www.ldoceonline.com/dictionary/%25GDWORD%25

The Free Dictionary of Idioms没有样式,图像不加载:
https://idioms.thefreedictionary.com/%GDWORD%

Online Etymology Dictionary没有样式,图像不加载:

https://www.etymonline.com/search?q=%GDWORD%