张春成
2022/11/16阅读:43主题:默认主题
Pubmed 搜索扩展的浏览器插件
Pubmed 搜索扩展的浏览器插件
我一直觉得搜索结果应该尽可能地方便用户使用,而不是单纯了吸引人点进去的入口。
于是我尝试制作了一个用于 Chrome 或 Edge 浏览器的插件,该插件用于查文献时常用的 Pubmed 搜索引擎,能够自动为它的搜索结果增加一些易用性功能。
简单来说,你不需要再点击进入任何一篇文章,而是可以直接在搜索界面上完成想要的操作。
PubMed[1]
不方便在哪里
如果我在该引擎上进行搜索,那么它会反馈一些搜索结果,每个结果对应一篇论文或者别的什么。如果你对某篇文章感兴趣,那么就需要点进去。

原始搜索界面

文章详情界面
这样很麻烦,因为搜索结果与详细页面完全脱节了,我为了多看几篇文章,就不得不重复着点击、返回、再点击、再返回的循环。简直要了老命。
插件做的事情
于是我就写了这个插件,该插件能够自动操作这些搜索结果,简单来说,它允许您在搜索页面中使用两个功能:
-
直接阅读感兴趣的论文的完整页面; -
直接访问论文的发表商,从而直接阅读完整的文章。
直观上讲,它会给每篇文章的摘要部分都加上一条粉色竖线,它代表摘要部分可以点击以激活功能 1;它还在之后加上一个带出版商 LOGO 的模块,点击它可以激活功能 2。
因此,如果你点击摘要,它会给你直接呈现细节界面(再点击一下就可以关掉它);如果你点击出版商 LOGO 你会直接跳转到文章的阅读界面。也就是说,你可以在这个搜索结果界面上,完成你想要做的一切操作。

搜索增强后的界面

点击摘要后弹出的界面
技术方案
这个小东西没有多少技术含量,但有个关键难点值得记录下来。这个难点在于 pubmed 这个网站对它的内容分发有较严格的限制。其中最主要的一点是它声明不支持 frame 再分发
<meta http-equiv="X-Frame-Options" content="deny" />
这导致无法简单地将搜索结果的内容页放置在我想要它出现的位置。
因此我使用 jQuery 代表用户对内容页面进行请求,拿到内容(content)后,再将其作为 innerHTML 直接“贴”在目标位置。
$.ajax({
url: ${targetURL},
success: function (data) {
// Got content as data
// Put data into the right div
}
})
剩下的事情交给运气,希望内容页面的代码不会对网页的排版造成破坏,结果是我的运气不错。
安装方式
本文的插件已经发布在我的 Github 上
Pubmed-chrome-edge-extension.git[2]
如果你感兴趣的话,可以下载下来,然后将它解压缩后直接拖到 Edge 浏览器的扩展页上即可完成安装,它会在搜索时自动工作。

安装方式
参考资料
PubMed: https://pubmed.ncbi.nlm.nih.gov/
[2]Pubmed-chrome-edge-extension.git: https://github.com/listenzcc/Pubmed-chrome-edge-extension.git
作者介绍