# 使用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:** 3

<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 日 14:19 UTC](https://forum.freemdict.com/t/topic/33548/41 "2024-11-01T14:19:05Z")

</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 日 14:22 UTC](https://forum.freemdict.com/t/topic/33548/42 "2024-11-01T14:22:29Z")

</div>

我考虑过自动对应css 到字典上，可以使用scss技术  
但是苦于mdd里面的css格式不规范，可能连css语法都不遵守。

dicTango严格来说没有遵守html/css/javascript的规则，把多个页面简单堆积到一个页面上

---

<div class="post-metadata">

**Author:** ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
**Post date:** [2024 年11 月 1 日 14:25 UTC](https://forum.freemdict.com/t/topic/33548/43 "2024-11-01T14:25:33Z")

</div>

> [@meandmyhomies](#):
>
> dicTango严格来说没有遵守html/css/javascript的规则，把多个页面简单堆积到一个页面上

请教一下，怎么才能把多个页面里有同样id的html元素不简单的放在同一个页面上然后兼顾原有的javacript还可以正常工作呢？

---

<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 日 14:29 UTC](https://forum.freemdict.com/t/topic/33548/44 "2024-11-01T14:29:40Z")

</div>

应该隔离每个独立的html/css/js，就像你在浏览器里面登录不同的电子邮箱，互相是隔离的。如果邮箱都混在一起，你还指望界面不受影响，那出毛病的责任完全是浏览器的。QQ邮箱和163邮箱互相能堆到一个页面上么？注意，不是物理上放在一个显示器上，而是内容（html。css。js）完全混在一起。

---

<div class="post-metadata">

**Author:** ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
**Post date:** [2024 年11 月 1 日 14:30 UTC](https://forum.freemdict.com/t/topic/33548/45 "2024-11-01T14:30:36Z")

</div>

那如果js是独立的脚本文件中，怎么隔离？

---

<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 日 14:31 UTC](https://forum.freemdict.com/t/topic/33548/46 "2024-11-01T14:31:01Z")

</div>

Apple Dictionary、日本几家商业词典软件和一些中国商业词典软件，我看内置的XHTML从来都不会在不同词条使用重复ID。即使它们不会把多个HTML放在同一界面，都是如此谨慎的。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 日 14:31 UTC](https://forum.freemdict.com/t/topic/33548/47 "2024-11-01T14:31:58Z")

</div>

js也是处理一个html里面的 （被mdx作者include进去的那个html，而不是软件想要随意堆积到一起的一堆html）

---

<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 日 14:32 UTC](https://forum.freemdict.com/t/topic/33548/48 "2024-11-01T14:32:40Z")

</div>

id的定义就是在本页面唯一  
否则是GUID

---

<div class="post-metadata">

**Author:** ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
**Post date:** [2024 年11 月 1 日 14:33 UTC](https://forum.freemdict.com/t/topic/33548/49 "2024-11-01T14:33:48Z")

</div>

举个例子吧, 在独立的js文件中有这么一行，怎么才可以实现隔离？

```javascript
document.getElementById('qpih1').style.display='none';

```

---

<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 日 14:39 UTC](https://forum.freemdict.com/t/topic/33548/50 "2024-11-01T14:39:48Z")

</div>

通过浏览器引擎隔离啊，浏览器里面的tab之间都是分开的，虽然公用一样的css，js，但是你在按钮一个tab的时候，不会在client端影响其他tab

现在可好，所有浏览器的tab（注意不是mdx里面的tab,mdx tab是单页面的）都放一个页面里面，那怎么能行。

qpih1在本页面（一个词头以下是唯一的就行了，符合html规矩）

---

<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 日 14:47 UTC](https://forum.freemdict.com/t/topic/33548/52 "2024-11-01T14:47:43Z")

</div>

三个tab那是融合到一个完整的独立的词头以下了。

你看论文网页的时候，每个readme.html 或者 index.html都完好，结果软件硬是要把网站里面所有论文的 readme.html 和index.html 强行堆到一个页面里面，那乱了套可不是网页作者的问题，那是软件问题。

---

<div class="post-metadata">

**Author:** ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
**Post date:** [2024 年11 月 1 日 14:50 UTC](https://forum.freemdict.com/t/topic/33548/53 "2024-11-01T14:50:49Z")

</div>

论文网页可以每个readme.html 或者 index.html都完好，因为它们属于不同的目录/章节，但词典制作者是一个相同词目分开三个词条来放的，比如test, 有名词跟动词等等，很多人都是分开不同的词条(注意是词条，不是词目)来放不同的解释的。  
这个时候如果分开三个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 日 14:51 UTC](https://forum.freemdict.com/t/topic/33548/54 "2024-11-01T14:51:43Z")

</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 日 14:52 UTC](https://forum.freemdict.com/t/topic/33548/55 "2024-11-01T14:52:08Z")

</div>

确实是这样，好多人一个完整词条拆成几块放。

---

<div class="post-metadata">

**Author:** ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
**Post date:** [2024 年11 月 1 日 14:53 UTC](https://forum.freemdict.com/t/topic/33548/56 "2024-11-01T14:53:30Z")

</div>

> [@meandmyhomies](#):
>
> 你家的门牌号只要在楼里面唯一就够了，现在非要全国/全球唯一，那你不是又蠢又坏么？

我上面也提到了，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 日 14:53 UTC](https://forum.freemdict.com/t/topic/33548/57 "2024-11-01T14:53:57Z")

</div>

不必争论了，取舍问题而已。

---

<div class="post-metadata">

**Author:** ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
**Post date:** [2024 年11 月 1 日 14:53 UTC](https://forum.freemdict.com/t/topic/33548/58 "2024-11-01T14:53:58Z")

</div>

是的，而且还有@@@LINK的情况

---

<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 日 14:54 UTC](https://forum.freemdict.com/t/topic/33548/59 "2024-11-01T14:54:24Z")

</div>

你搞错了概念，或者在偷换概念。

一个页面里面可以有N个tab，包含没有tab  
只要页面内部逻辑完整独立就行，这是html的规矩

你要求所有页面都可以堆积到一起，然后还保持唯一，那就偷换概念了。

---

<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 日 15:03 UTC](https://forum.freemdict.com/t/topic/33548/60 "2024-11-01T15:03:04Z")

</div>

@amob

我有解决办法, 讲过了，不依赖ID或者TagName，只依赖附近的html结构。

以后有空搞一个更新，缺点就是不兼容老版本了。

---

<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 日 15:27 UTC](https://forum.freemdict.com/t/topic/33548/61 "2024-11-01T15:27:49Z")

</div>

@amob，

弄好了。只需要改动三行代码。比AI的办法简单有效多了。

你能把你的反查js发给我么，我改动以后你测试一下。

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

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