试试:
<script type="text/javascript">
function setDefinition() {
// 原函数逻辑,这里假设没有实际代码
}
function setChinese() {
// 原函数逻辑,这里假设没有实际代码
}
document.addEventListener('click', function (e) {
// 获取点击位置的单词
var word = getWordAtPoint(e.clientX, e.clientY);
if (word) {
// 调用 eudic-es://dict/${word}
var eudicEsUrl = `intent:peek#Intent;action=colordict.intent.action.SEARCH;category=android.intent.category.DEFAULT;type=text/plain;component=com.eusoft.eshelper/com.eusoft.dict.activity.dict.LightpeekActivity;scheme=eshelper;S.EXTRA_QUERY=${word};end`;
window.location.href = eudicEsUrl;
}
});
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>