在使用词典的过程中我发现了下面的问题:
词典内的跳转链接的内容,不是这个词的本身,而是词典内部对词头的数字编码。
即下图中的:工具
→ 19641
虽然这个链接不影响单独这本词典内的查词,但是查询结果如下图。
可以看到下图中,因为当前词典单独的词头数字编码,右边的查得词典一栏只有一本。
论坛里面似乎没有帖子提到过这个问题,亦或许是我搜索得不到位。
最初我是想直接批量修改mdx源文件来把链接内容替换成词条的,结果在询问ChatGPT时偶然得知了javascript的dom操作这个东西。
也就是通过JavaScript可以在html渲染过程中,临时性地直接批量编辑每个词条的html内容。
这样一来就不必冒着丢失原数据的风险修改mdx源文件了,而且比起直接编辑源文件,写javascript更轻松些。
借助gpt有了如下的js代码:
function updateLinkHref() {
// .querySelectorAll(' ')内一定要写具体的selector,
// 避免影响 Goldendict的html页面内其他的词典
document.querySelectorAll('.ruigo-items a').forEach(link => {
const text = link.textContent.trim();
/* 在replace()里面的 '/ /' 中间写正则表达式,匹配去掉不需要的部分 */
let cleanedText = text.replace(/(.*?)/g, '').trim(); // 去掉括号包裹的内容
cleanedText = cleanedText.replace(/・.*/g, ''); // 有・并列的,只保留第一个
/* 处理好的内容写入跳转链接里面 */
link.href = cleanedText;
});
}
/* 下面这一段是让整个html页面加载完再执行js操作内容,应该是不可缺少的 */
document.addEventListener('DOMContentLoaded', () => {
updateLinkHref()
});
经过javascript操作过的链接变成了理想中的样子:
金槌・金鎚
→ 金槌