请教:不同词典软件对javascript的兼容性

看到隔壁的一个javascript应用,在mdict中很好,但无法在goldendict中使用:
《简明英汉词典三万通》(词典+背单词)首发

请教:不同词典软件对javascript的兼容性大致是如何的?

如果是QT6 + WebEngine版本的GoldenDict,对Javascript的支持是最新的,没有兼容性问题。

这里的问题是这个词典用了浏览器的内置跳转,MDict的协议是"entry://%word%",GoldenDict的是"gdlookup://localhost?%word%",欧路的没看过,各家对这个跳转协议的支持都可能不太一样。想兼容的话要对这个跳转协议做适配。

2 Likes

我把bdc.js中所有的 entry:// 都更改为 gdlookup://localhost?,但还是不行。

以词头nice为例,GoldenDict跳转的完整协议是:

gdlookup://localhost?word=nice&group=4294967294

group是分组id,默认是4294967294,指定分组,改成1,2,3,4。

在开发者工具里,可以输入下面字符串自己尝试。要改Javascript最好作者自己来,简单替换不一定能生效。

3 Likes

一般来说如果gd可以识别出来的话,会自动替换。
不过对js中使用的链接应该没处理。

也可以尝试链接 bword:xxxxx(不是bword://,这个最好测试下。) 也是gd内置的一个链接形式 跟 gdlookup://localhost?word=xxxx通用。

考虑后续直接让gd支持entry://xxxxx 得了。

2 Likes

没有隔壁账号,能分享在这里么?

转11#。。。。。。

1 Like

最新的版本是在github吧?下载中:6.3.0-GoldenDict-Windows.b2e97285-001826.zip

1 Like

在最新版GD中测试了一下,还是不行:js应该是启用了,因为查询一个单词,它会识别出该单词所在的群组(g1),但点击js相关的链接却不能跳转。

我的粗浅理解:GD加载页面时,会运行js,并将相关变量转为html显示出来;页面加载后,js函数无法触发GD的查询动作。

image

以下是原开发者之前的反馈,FYI:

1 Like

后续我看下,应该是这个原因,

这个版本可以了。@Vim
支持entry的gd版本

代码实现的方式不是很满意,后续会继续调整下。

1 Like

额外发现了个bug。对于命中多词条的情况,红框中的点击,mdict中js会出错,固定跳到undefined(js错误)

2 Likes

已用上,可以了!强大!感谢!!

2 Likes

这种情况下,如果页面上的状态是没有选中的分组。点击随机会出现死循环。

1 Like

不知道怎么下载呀