普通模式查词跳转疑问

就是普通查词模式下,查一个词,点击某一个词典的内部跳转,他搜索的是只是跳转前所在词典的词典,能不能加个开关,允许搜索当前词典意外的词典查词,


那不要做成跳转就好了,非跳转(超链接)的词条点译是会查找所有词典的。
一个词典相当于一个网站,在一个网站里点击超链接只定向到链接的目的网页,而不会同时定向到其它网页的。

就是两部词典单独打包没有问题,到打包到一块会报错,Begining loading source file…
Keyword is longer than [数字] at position: -[数字] of the source file
类似这样提示,用大文件特别版强制打包也能打包,到会让整个程序都卡顿明显,应该是单个词条和对应的内容有些有几十m的原因吧

如果只是mdd出错,我建议不要用mdd, 把所有文件压缩成一个跟mdx同名的zip文件,比如mdx是abc.mdx, 那么zip文件名就是abc.res.zip,DictTango支持这种格式的资源文件,但缺点是其它词典应用不支持

如果你更新到最新的DictTango,你也可以这样做:

  1. 不要做成超链接
  2. 把词条用span包起来,span加上属性tap-translate, 比如词条是“素炒三丝”,那么html就是
<span tap-translate>素炒三丝</span>

通过这种方式,DictTango会直接读取span里面的内容进行浮动窗口查词

1 Like

是否有时间在置顶帖汇总下DictTango特有的功能?
某版开始支持某功能,比如最新的tap-translate浮动窗口查词,还有上面的zip资源文件。
现在散落在各处,想找又不好找。

帮助->Github Wiki,我会在这里不定时更新一些常用技巧

1 Like

这种不生效,跳转不了,最新版本

BBQ
<style>
span {
    display: none;
    width: 28%;
    margin: 0.5%;
    padding: 8px 0;
    text-align: center;
    box-sizing: border-box;
    font-size: 14px;
    border: 1px solid #eee;
    border-radius: 6px;
    background: #fff;
    color: #333;
    text-decoration: none;
    vertical-align: top;
}
span.show { display: inline-block; }
/* 未加载 = 完全不占位 */
lazy {
    display: none;
}
lazy.active {
    display: block;
    height: auto;
}
.load-more {
    display: block;
    width: 90%;
    margin: 12px auto;
    padding: 12px 0;
    text-align: center;
    background: #f2f2f2;
    border-radius: 8px;
    font-size: 15px;
    cursor: pointer;
}
.load-more.hide {
    display: none !important;
}
</style>
<script>
window.onload = function() {
    const DEFAULT = 10;
    const ONCE = 10;
    let maxShow = DEFAULT;
    const lazyItems = document.querySelectorAll('lazy');
    const totalItems = lazyItems.length;
    const loadBtn = document.querySelector('.load-more');
    // 🔥 核心:只显示【可视区内】的行,下方超出的全部折叠隐藏
    function update() {
        const viewHeight = window.innerHeight;
        // 找到当前可视区内 最后一行的位置
        let lastVisibleIndex = -1;
        for (let i = 0; i < lazyItems.length; i++) {
            const item = lazyItems[i];
            const rect = item.getBoundingClientRect();
            if (rect.top < viewHeight && i < maxShow) {
                lastVisibleIndex = i;
            }
        }
        // 🔥 只显示到可视区最后一行,后面全部隐藏折叠
        for (let i = 0; i < lazyItems.length; i++) {
            const item = lazyItems[i];
            const spanList = item.querySelectorAll('span');
            if (i <= lastVisibleIndex) {
                item.classList.add('active');
                spanList.forEach(span => span.classList.add('show'));
            } else {
                // 🔥 不在可视区 → 按行折叠、隐藏、不占位
                item.classList.remove('active');
                spanList.forEach(span => span.classList.remove('show'));
            }
        }
        // 加载完隐藏按钮
        if (maxShow >= totalItems) {
            loadBtn.classList.add('hide');
        } else {
            loadBtn.classList.remove('hide');
        }
    }
    // 点击加载更多
    window.loadMore = function() {
        maxShow += ONCE;
        update();
    };
    // 滚动实时生效(上滑/下滑都100%响应)
    window.addEventListener('scroll', update);
    update();
};
</script>
<lazy>
  <span tap-translate>烤兔子腿</span>
  <span tap-translate>吮指BBQ烤翅根</span>
  <span tap-translate>烤肉</span>
</lazy>
<lazy>
  <span tap-translate>蒜香烧烤鱿鱼</span>
  <span tap-translate>叉烧鸡肉串</span>
  <span tap-translate>牙签羊肉</span>
</lazy>
<lazy>
  <span tap-translate>日式照烧烤鱿鱼</span>
  <span tap-translate>香辣烤翅根</span>
  <span tap-translate>孜然牛肉蘑菇饭</span>
</lazy>
<lazy>
  <span tap-translate>原味烤扇贝</span>
  <span tap-translate>BBQ鸡肉核桃披萨</span>
  <span tap-translate>香辣烧烤豆腐串</span>
</lazy>
<lazy>
  <span tap-translate>孜然烤翅</span>
  <span tap-translate>香辣烤鲫鱼</span>
  <span tap-translate>咖喱烤大排</span>
</lazy>
<lazy>
  <span tap-translate>微波日式照烧烤鸡</span>
  <span tap-translate>彩椒羊肉串</span>
  <span tap-translate>牙签肉</span>
</lazy>
<lazy>
  <span tap-translate>多彩牛肉串烧</span>
  <span tap-translate>烤鸡胸</span>
  <span tap-translate>黑椒牙签肉</span>
</lazy>
<lazy>
  <span tap-translate>烤土豆</span>
  <span tap-translate>烤肉串</span>
  <span tap-translate>叉烧烤翅</span>
</lazy>
<lazy>
  <span tap-translate>蜜汁烤鸡腿</span>
  <span tap-translate>孜然土豆焖牛肉</span>
  <span tap-translate>脆花菜</span>
</lazy>
<lazy>
  <span tap-translate>烤薯条</span>
  <span tap-translate>叉烧烤大排</span>
  <span tap-translate>薄荷照烧烤虾</span>
</lazy>
<lazy>
  <span tap-translate>烧烤杏鲍菇</span>
</lazy>
<div class="load-more" onclick="loadMore()">点击加载更多</div>

我理解错了,span包裹的内长按复制后在弹出的查词的弹窗查词能查词,不是我理解的直接跳转

应该不用复制,点击就会进行点译,或者你把Mdx发上来看看

22222.mdx (15.5 MB)

DictTango对这个处理有点问题,下版本修正

你可以试一下最新的2.3.6.9, 现在应该可以了

更新最新版本打开单击点击能跳转(不打开跳转不了),但其他词典这样点击任意词都会跳转,所有这个开关我关掉了,其实也无所谓有没有这个功能,辛苦了,不做也可以

可能你不太了解它的意义,其实在别的词典里,你点任意一个“词”(得是那种常见词),DictTango会在后台根据你点的位置帮你自动分词,这个分词是基于一个内置的中文词组的 mdx 文件来实现的。只有当你点到的词刚好在这个 mdx 里,它才会被识别出来。

但像你这个词典,很多词其实都不在 DictTango 的这个中文词库里。如果你没有加上 “tap-translate” 这个属性,那你点中文的时候(比如“微波日式照烧烤鸡”),DictTango 很可能只会识别出“微波”、“日式”这种拆开的词,而不是你真正想要的整句“微波日式照烧烤鸡”。

我理想中的是加上您说的“tap-translate” 这个属性的标签,然后禁止点译模式下点击可以跳转,其他词典也不会影响到

明白了,你还是想跳转,不要点译,请忽略我这个功能和前面的建议

1 Like