使用Mdict Editor Tool制作Tab词典的致命毛病

理想状态下,应该是所有相同的词都合并在同一个tab界面下,只有一个词条存在。我们每次搜词只会搜到一个tab词条。

但是如果你搜同一个词语,却能同时搜索到两个词条,就会演变成灾难,你永远无法打开第一个之后的界面的tab。

这样的问题,以前就经常遇到,今天仔细思考了一下,总算找到了原因。因为id是重复的,js打开tab是基于id的,就会相互冲突。js会优先打开在前方的同一id的tab界面。理想的情况,必须保证每个id都是唯一的才对。 Mdict Editor Tool的作者显然没考虑到要是同时搜索到两个词条的情况。

见下图,我们搜索“离开”,实际搜索到了5个词条,

第二个到第四个词条,分别是(离)开、离开:、离开]。
我们为什么会同时搜索到?不难猜是strip key的原因。

第五个词条应该是简繁通搜得到的,原始词条为離開。也就是说tab词典和简繁通搜天生不搭。

目前个人认为比较好的方案是,每个tab界面要添加一个容器,容器的id必须保证唯一性,可以使用序号。JavaScript只打开对应的容器内的tab。

3 Likes

你的截图是我的tab字典,而且是安装有问题的。制作tab时候不用Mdict Editor Tool

什么安装问题?我感觉自己分析得没错。Mdict Editor Tool和你做的都一样。

你的软件有问题,没有隔离不同的词条之间的namespace。 html里面的规定是id只能有一个match。现在把好几个拼写类似的词条放在同一个页面,id的意义就没有了,当然不是id的错。

没错,DictTango没有隔离namespace,所以最好得自己做个容器隔离以兼容啊。DictTango用户还是很多的。

任何依赖id的页面都无法运行,这不是页面设计错。是软件有问题。

可以换个思路啊,不一定用id,把id改成一种随意命名的属性应该就可以的。

就像把全国的街道名称混到一起一样,你的包裹没法定位。

你把id改成这样就行了,每个tab用xxxx-词条数字序号-tab1,xxxx-词条数字序号-tab2…

不可以的,随机的内容是跟着页面变化的,程序就完全无法确定内容的所指。

我已经有了这样的id,但是架不住好几个字典混在一起。id是自然数,从一开始。内部独立,但是字典之间混起来怎么能行。

总之这样命名ID,欧路也会因此打开额外的tab。虽然问题没DictTango严重,也是有的。

应该要想办法改进兼容性问题比较好的。

我发此贴也是指出个问题,让大家警惕使用这个工具。我懂得不多,解决方案欠妥,望见谅。期待有大神给更好的方案。

你要是把namespace堆积起来,说是兼容问题,有点本末倒置了。

邮递员把街道名混起来,难道是地址写错了么。

不好意思,已经听不太懂了。总之你有办法的话,还谢谢你能改进下。

这个截图看不出来问题。

版本好像也是老的。试试新版本。地址没变。

2024-08-05,7577903词条。
SHA256 0fdeb840bab717ce6549ec934c6b20eb58e969a099344f97630b11a864cb6e59 反查合集.mdx

08-07 最新,fnec

搞错了,欧路是正常的。

标题错了,应该是DicTango 致命混淆了namespace。

把类似的词头放在一起可以,但是实施的时候不能混淆namespace。

这相当于快递系统把不同城市的地址混在一个邮递员的框子里面。