逛知乎的时候,常看到卡片式的链接。卡片式链接不仅直观显示出网址、标题、网站的头像等等信息。
这个方案是看到目的地 的文章,我这里也测试了一下。
引入JS
GitHub:Lete114/CardLink
给网站引入JS,放置在**head标签
、body标签
**之前
1
| <script src="https://cdn.jsdelivr.net/npm/cardlink"></script>
|
使用方法
链接格式为<a href="网址" target="_blank"></a>
- 使用方法1
1 2 3 4
| <script> <article></article>(文章)标签下所有打开新标签窗口的a标签生成卡片链接 cardLink(document.querySelectorAll('article a[target=_blank]')) </script>
|
- 使用方法2
1 2 3 4 5 6 7 8 9 10 11 12
| <script> document.querySelectorAll('article a[target=_blank]').forEach((el) => { el.setAttribute('cardlink', '') })
document.querySelector('a#example').setAttribute('cardlink', '')
cardLink() </script>
|
- 使用方法3
1 2 3 4 5 6 7 8 9 10
| <script>
cardLink(document.querySelectorAll('#contents>.article-content a[target=_blank]'))
或 document.querySelectorAll('#contents>.article-content a[target=_blank]').forEach((el) => { el.setAttribute('cardlink', '') }) </script>
|
跨域请求
由于这是前端发送请求获取 HTML,可能部分网站会存在跨域 (CORS) 问题,所以 cardLink
允许你使用代理服务器去请求目标网站的 HTML
1 2 3 4 5 6 7 8 9
| <script> cardLink.server = 'https://api.allorigins.win/raw?url='
<article></article>(文章)标签下所有打开新标签窗口的a标签生成卡片链接 cardLink(document.querySelectorAll('article a[target=_blank]')) </script>
|
作者也提供自建的代理服务器方案,将目标的链接传递给代理服务器,让代理服务器去请求目标链接然后返回html文本.
GitHub: Lete114/CardLink at server
或者使用第三方的免费的跨域代理服务
成果演示
但是经过测试发现,这个js会在控制台留下一堆bebug,一堆请求信息,都是跨域请求的信息.