我正在使用Autolinker.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
并且两个网址都链接在一起。我尝试使用
var options = {urls: { schemeMatches: true, wwwMatches: true, tldMatches: false }};
var linkedText = Autolinker.link(formInput, options);
但这会消除google.com
上的链接以及example.com
与www.kbb.com
关联的链接。
基本上我只想排除一个特定的网址,即example.com
。
答案 0 :(得分:2)
对不起,我刚刚注意到此线程。我是图书馆作者。我知道已经很晚了,但是将回复留给遇到它的任何人。
排除特定网址自动链接的最简单方法是利用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
答案 1 :(得分:1)
用令牌替换文本,运行自动链接,用原始文本替换令牌。这里明显的弱点是,如果formInput包含|| 任何 ||它会破裂。
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>
答案 2 :(得分:1)
所以我编写了一个函数来封装Autolinker:
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);