我正在清理来自各种第三方 XML 源的 CDATA 内容,剥离所有 HTML 服务器端并使用 Linkify.js.org (v3.0.3) 安全地将 HTML 标签重新应用到清理后的纯文本链接客户端。
我的项目很大程度上依赖于jQuery (v3.6.0)。
linkify jQuery DOM 数据 API 在链接和电子邮件地址方面效果很好,但主题标签却存在问题。默认情况下,主题标签重定向到 https://my-domain.com/current-dir/#<HashTag>
,但我希望它们重定向到
https://twitter.com/hashtag/<HashTag>
。我从演示示例中知道这是可能的,但我想坚持使用 jQuery 解决方案,并在可能的情况下维护 div 数据属性。我已阅读
Linkify.js.org/docs/ 中的文档,但不知道如何在不删除 jQuery div 数据属性的情况下更改主题标签 URL。
下面是一个简单的示例(维护_blank
HREF 目标很重要):
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Linkify</title>
</head>
<body>
<div data-linkify="this" data-linkify-target="_blank">
Domain Test: domain.com. Email Test: [email protected]. HashTag Test: #Linkify.
</div>
<script src="/js/jquery.min.js"></script>
<script src="/js/linkify.min.js"></script>
<script src="/js/linkify-jquery.min.js"></script>
<script src="/js/linkify-plugin-hashtag.min.js"></script>
</body>
</html>
工作很棒,但正如前面提到的,#Linkify 重定向到同一页面(例如;https://my-domain.com/current-dir/#Linkify
)。客户端 JS 不是我的强项,但是我可以使用
data-linkify
属性将 HashTag 目的地更改为 Twitter 吗?或者我可以使用额外的 jQuery 代码来修改
linkify-plugin-hashtag.min.js
插件的行为?
如果添加这个,应该可以解决。
linkify.options.defaults.formatHref.hashtag= (href) =>
'https://twitter.com/hashtag/' + href.substr(1);
您可以在 https://linkify.js.org/docs/plugin-hashtag.html 和 https://linkify.js.org/docs/options.html 阅读更多内容
<script src="/js/linkify-plugin-hashtag.min.js"></script>
之后:
<script>
linkify.options.defaults.formatHref = (href, type) =>
type === 'hashtag' ? 'https://twitter.com/hashtag/' + href.substr(1) : href
</script>
这是对 @Salketer 代码的修改,应该可以使其与最新版本的 Linkify 一起使用。