AnkiDriod点击任意单词 自动调用欧路词典查询

AnkiDriod一键调用欧路词典查词 - 知乎 (zhihu.com)给出Intent可以用调用浮窗查询比 eudic://dict/ 方便点。

通过js实时获取点击的单词再查询
image

把下面这段代码加入到卡片模板的背面内容模板即可

<script>
document.addEventListener('click', function(e) {
    // 获取点击位置的单词
    var word = getWordAtPoint(e.clientX, e.clientY);
    if (word) {
        // 调用eudic://dict/${word}
        window.location.href = `intent:peek#Intent;action=colordict.intent.action.SEARCH;category=android.intent.category.DEFAULT;type=text/plain;component=com.eusoft.eudic/com.eusoft.dict.activity.dict.LightpeekActivity;scheme=eudic;S.EXTRA_QUERY=${word};end`;
    }
});

function getWordAtPoint(x, y) {
    if (document.caretRangeFromPoint) {
        var range = document.caretRangeFromPoint(x, y);
        var textNode = range.startContainer;
        var text = textNode.data;
        var position = range.startOffset;

        // 向前和向后扫描,直到找到单词的边界
        var start = position, end = position;
        while (start > 0 && /\S/.test(text[start - 1])) {
            start--;
        }
        while (end < text.length && /\S/.test(text[end])) {
            end++;
        }

        return text.substring(start, end);
    }
    return null;
}
</script>
4 Likes

感谢发帖,很有用,不知道该怎么调用bluedict或者DictTango呢

在注释下一行改地址即可${word}是目标词,具体地址我不清楚,不过开发者也在论坛

我已经把代码加入到了,手机测试成功。多谢多谢。

请教,如果改成双击该如何操作呢?单击感觉容易误操作。

再次表示感谢分享!

您可以使用dblclick 事件代替click 事件

小白多谢指导,挺好用的。

推荐大家试一下。

双击好像在手机上不大灵敏,还是用单击吧。有选词后再单击这种操作吗?

要求好像有点过份了。

DictTango可以参考以下文件