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

可能和版本有关,看了下大辞海的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 个赞