如果它是外部 link,我如何将 rel = "nofollow" 添加到 CKEditor 中的 link
How can I add rel = "nofollow" to a link in CKEditor if it's an external link
我想将 rel="nofollow"
提供给我的外部 link,其内容由 ckeditor 管理。
example.com = 我的网站
externallink.com = 任何外部 link
例如:
<p>
Lorem <a href="https://example.com/an-article.html">ipsum</a> dolar
<a href="http://externallink.com/example.html" rel="nofollow">sit</a> amet.
</p>
这个解决方案:
editor.dataProcessor.htmlFilter.addRules(
{
elements :
{
a : function( element )
{
if ( !element.attributes.rel )
element.attributes.rel = 'nofollow';
}
}
});
from 将 nofollow
添加到所有 a
元素。
如何只过滤外部 links?
还有关于 CKEditor 数据处理器的深度文档:http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Data_Processor
注意:Whosebug 的文本编辑器使用这些问题的答案。检查此问题中两个 link 的 rel 属性。
我在我的页面上使用来自 cdn 的 <script src="//cdn.ckeditor.com/4.5.10/standard/ckeditor.js"></script>
。
所以你需要比较主机,像这样的东西应该可以。
a : function( element )
{
if ( element.host !== window.location.host ) {
element.attributes.rel = 'nofollow';
}
}
我解决了;
CKEDITOR.on('instanceReady', function(ev) {
var editor = ev.editor;
editor.dataProcessor.htmlFilter.addRules({
elements : {
a : function( element ) {
if ( !element.attributes.rel ){
//gets content's a href values
var url = element.attributes.href;
//extract host names from URLs
var hostname = (new URL(url)).hostname;
if ( hostname !== window.location.host && hostname !=="youranothersite.com") {
element.attributes.rel = 'nofollow';
}
}
}
}
});
})
此解决方案也适用于 Internet Explorer:
CKEDITOR.on('instanceReady', function(ev) {
var editor = ev.editor;
editor.dataProcessor.htmlFilter.addRules({
elements : {
a : function( element ) {
if ( !element.attributes.rel ){
//gets content's a href values
var url = element.attributes.href;
//extract host names from URLs (IE safe)
var parser = document.createElement('a');
parser.href = url;
var hostname = parser.hostname;
if ( hostname !== window.location.host) {
element.attributes.rel = 'nofollow';
element.attributes.target = '_blank';
}
}
}
}
});
})
一定要检查主机名的空值和相对路径,不要为“tel:+70000000000”或“mailto:email@[”之类的链接添加 target='_blank' 和 rel='nofollow' =14=]"
CKEDITOR.on('instanceReady', function (ev) {
var editor = ev.editor;
editor.dataProcessor.htmlFilter.addRules({
elements: {
a: function (element) {
var url = element.attributes.href;
var parser = document.createElement('a');
parser.href = url;
var hostname = parser.hostname;
if (hostname && hostname !== "localhost" && hostname !== window.location.host) { // если внешняя ссылка
if (!element.attributes.target)
element.attributes.target = '_blank';
if (!element.attributes.rel)
element.attributes.rel = 'nofollow';
}
}
}
});
});
我想将 rel="nofollow"
提供给我的外部 link,其内容由 ckeditor 管理。
example.com = 我的网站
externallink.com = 任何外部 link
例如:
<p>
Lorem <a href="https://example.com/an-article.html">ipsum</a> dolar
<a href="http://externallink.com/example.html" rel="nofollow">sit</a> amet.
</p>
这个解决方案:
editor.dataProcessor.htmlFilter.addRules(
{
elements :
{
a : function( element )
{
if ( !element.attributes.rel )
element.attributes.rel = 'nofollow';
}
}
});
from 将 nofollow
添加到所有 a
元素。
如何只过滤外部 links?
还有关于 CKEditor 数据处理器的深度文档:http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Data_Processor
注意:Whosebug 的文本编辑器使用这些问题的答案。检查此问题中两个 link 的 rel 属性。
我在我的页面上使用来自 cdn 的 <script src="//cdn.ckeditor.com/4.5.10/standard/ckeditor.js"></script>
。
所以你需要比较主机,像这样的东西应该可以。
a : function( element )
{
if ( element.host !== window.location.host ) {
element.attributes.rel = 'nofollow';
}
}
我解决了;
CKEDITOR.on('instanceReady', function(ev) {
var editor = ev.editor;
editor.dataProcessor.htmlFilter.addRules({
elements : {
a : function( element ) {
if ( !element.attributes.rel ){
//gets content's a href values
var url = element.attributes.href;
//extract host names from URLs
var hostname = (new URL(url)).hostname;
if ( hostname !== window.location.host && hostname !=="youranothersite.com") {
element.attributes.rel = 'nofollow';
}
}
}
}
});
})
此解决方案也适用于 Internet Explorer:
CKEDITOR.on('instanceReady', function(ev) {
var editor = ev.editor;
editor.dataProcessor.htmlFilter.addRules({
elements : {
a : function( element ) {
if ( !element.attributes.rel ){
//gets content's a href values
var url = element.attributes.href;
//extract host names from URLs (IE safe)
var parser = document.createElement('a');
parser.href = url;
var hostname = parser.hostname;
if ( hostname !== window.location.host) {
element.attributes.rel = 'nofollow';
element.attributes.target = '_blank';
}
}
}
}
});
})
一定要检查主机名的空值和相对路径,不要为“tel:+70000000000”或“mailto:email@[”之类的链接添加 target='_blank' 和 rel='nofollow' =14=]"
CKEDITOR.on('instanceReady', function (ev) {
var editor = ev.editor;
editor.dataProcessor.htmlFilter.addRules({
elements: {
a: function (element) {
var url = element.attributes.href;
var parser = document.createElement('a');
parser.href = url;
var hostname = parser.hostname;
if (hostname && hostname !== "localhost" && hostname !== window.location.host) { // если внешняя ссылка
if (!element.attributes.target)
element.attributes.target = '_blank';
if (!element.attributes.rel)
element.attributes.rel = 'nofollow';
}
}
}
});
});