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