排除具有自动链接器的特定链接.js
Excluding a specific link with Autolinker.js
我正在使用自动链接器.js来链接从表单输入的文本,但我想从链接中排除example.com
。
var formInput = "Don't link example.com but link google.com and www.kbb.com please";
var linkedText = Autolinker.link(formInput);
自然会产生linkedText
链接两个 URL。我尝试使用
var options = {urls: { schemeMatches: true, wwwMatches: true, tldMatches: false }};
var linkedText = Autolinker.link(formInput, options);
但这消除了google.com
上的链接以及example.com
,同时保持www.kbb.com
链接。
基本上我只想排除一个特定的 url,即 example.com
,从链接中。
抱歉,我刚刚注意到了这个线程。我是图书馆的作者。我知道已经很晚了,但把这个回复留给遇到它的人。
从自动链接中排除特定 URL 的最简单方法是利用replaceFn
选项。例如:
var formInput = "Don't link example.com but link google.com and www.kbb.com please";
var linkedText = Autolinker.link( formInput, {
replaceFn: function( match ) {
if( match.getType() === 'url' ) {
var url = match.getUrl();
if( url.indexOf( 'example.com' ) !== -1 ) {
return false; // don't autolink matches for example.com
}
}
return true; // autolink everything else as usual
}
} );
这将产生以下结果:
Don't link example.com but link <a href="http://google.com" target="_blank" rel="noopener noreferrer">google.com</a> and <a href="http://www.kbb.com" target="_blank" rel="noopener noreferrer">kbb.com</a> please
以下是有关可在UrlMatch
对象上调用的方法的一些文档:http://greg-jacobs.com/Autolinker.js/api/#!/api/Autolinker.match.Url
还有一个更深入的使用replaceFn
的例子:https://github.com/gregjacobs/Autolinker.js#custom-replacement-function
用标记替换文本,运行自动链接,将标记替换为原始文本。这里明显的弱点是,如果表单输入包含 ||任何||它会破裂。
var formInput = "Don't link example.com but link google.com and www.kbb.com please";
var stuffIdontwanttolink = ['example.com', 'google.com'];
stuffIdontwanttolink.forEach(function(entry, index) {
formInput = formInput.replace(entry, '||' + index + '||');
});
console.log(formInput);
//var linkedText = Autolinker.link(formInput);
var linkedText = "Don't link ||0|| but link ||1|| and <a href='//www.kbb.com'>www.kbb.com</a> please"; // Simulated
stuffIdontwanttolink.forEach(function(entry, index) {
linkedText = linkedText.replace('||' + index + '||', entry);
});
console.log(linkedText);
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
所以我写了一个函数来包装自动链接器:
function excludedLinkify (inputText) {
var exclusions = [
{url:'example.com', temp:'7g578v43gc7n3744c'}
];
$.each(exclusions, function (i, e) {
inputText = inputText.replace(e.url, e.temp);
});
inputText = Autolinker.link(inputText);
$.each(exclusions, function (i, e) {
inputText = inputText.replace(e.temp, e.url);
});
return inputText;
}
这样为了达到预期的结果,我现在可以
var formInput = "Don't link example.com but link google.com and www.kbb.com please";
var linkedText = excludedLinkify(formInput);
相关文章:
- Hammer.js阻止在Android Webview中点击超链接
- 如何检查链接是否有文本,并根据文本值评估条件-Jquery/JS
- 如何从外部链接JS文件
- 正在Rail应用程序中链接JS文件
- 页面加载时出现浏览器链接 JS 错误
- Chrome扩展:从弹出窗口发送数据以取消链接JS文件
- 如何制作一个按钮,当悬停在上面时,会滑动并显示链接 (JS)
- 有条件地以角度显示链接.js
- 排除具有自动链接器的特定链接.js
- 图片链接替换为其他链接JS
- 链接js和immacro来自动填写表单
- 链接JS和jQuery文件
- AngularJs -在js指令中链接js代码
- 如何在钛中链接js页面
- 为什么我不能连接到外部链接.js ?(使用Xcode插件phonegap)
- 绕过打开链接js的限制
- 如何链接JS路由变量和Symfony 2 url
- 脚本标签-不链接(JS平台游戏)
- 如何向图表添加链接.js(圆环图)
- 如何使列成为数据表中的链接.js