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

**URL:** <https://forum.freemdict.com/t/topic/33548>\
**Category:** 软件经验交流展望\
**Created:** [2024 年11 月 1 日 09:32 UTC](https://forum.freemdict.com/t/topic/33548 "2024-11-01T09:32:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 09:32 UTC](https://forum.freemdict.com/t/topic/33548/1 "2024-11-01T09:32:36Z")

</div>

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

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

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

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

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

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

 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/f/e/fe9d93fa07f93a8aa539fd823cc732259fc090a2.png)

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

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:18 UTC](https://forum.freemdict.com/t/topic/33548/2 "2024-11-01T12:18:09Z")

</div>

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

 ![Screenshot_20241101_071602](https://forumcdn.freemdict.com/uploads/default/original/3X/0/3/03da4233512b3f469aeb9a199c0d1705cc2f12a9.jpeg)

---

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 12:20 UTC](https://forum.freemdict.com/t/topic/33548/3 "2024-11-01T12:20:30Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:21 UTC](https://forum.freemdict.com/t/topic/33548/4 "2024-11-01T12:21:23Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 12:22 UTC](https://forum.freemdict.com/t/topic/33548/5 "2024-11-01T12:22:09Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:24 UTC](https://forum.freemdict.com/t/topic/33548/6 "2024-11-01T12:24:39Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 12:25 UTC](https://forum.freemdict.com/t/topic/33548/7 "2024-11-01T12:25:26Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:25 UTC](https://forum.freemdict.com/t/topic/33548/8 "2024-11-01T12:25:44Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 12:26 UTC](https://forum.freemdict.com/t/topic/33548/9 "2024-11-01T12:26:31Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:26 UTC](https://forum.freemdict.com/t/topic/33548/10 "2024-11-01T12:26:48Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:28 UTC](https://forum.freemdict.com/t/topic/33548/11 "2024-11-01T12:28:04Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 12:28 UTC](https://forum.freemdict.com/t/topic/33548/12 "2024-11-01T12:28:35Z")

</div>

![image](https://forumcdn.freemdict.com/uploads/default/original/3X/4/9/49f119f2ca9a56b7a9f14edd3ae13c7220e1a318.png)

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

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

---

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 12:30 UTC](https://forum.freemdict.com/t/topic/33548/13 "2024-11-01T12:30:11Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:31 UTC](https://forum.freemdict.com/t/topic/33548/14 "2024-11-01T12:31:16Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 12:32 UTC](https://forum.freemdict.com/t/topic/33548/15 "2024-11-01T12:32:21Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:32 UTC](https://forum.freemdict.com/t/topic/33548/16 "2024-11-01T12:32:46Z")

</div>

这个截图看不出来问题。

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

---

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 12:35 UTC](https://forum.freemdict.com/t/topic/33548/17 "2024-11-01T12:35:43Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:37 UTC](https://forum.freemdict.com/t/topic/33548/18 "2024-11-01T12:37:47Z")

</div>

08-07 最新，fnec

---

<div class="post-metadata">

**Author:** ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
**Post date:** [2024 年11 月 1 日 12:52 UTC](https://forum.freemdict.com/t/topic/33548/19 "2024-11-01T12:52:58Z")

</div>

搞错了，欧路是正常的。

---

<div class="post-metadata">

**Author:** ![meandmyhomies](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/958977/32.png) [@meandmyhomies](https://forum.freemdict.com/u/meandmyhomies)\
**Post date:** [2024 年11 月 1 日 12:56 UTC](https://forum.freemdict.com/t/topic/33548/20 "2024-11-01T12:56:42Z")

</div>

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

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

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

[下一页](https://forum.freemdict.com/t/topic/33548.md?page=2)
