在我的CKEditor中,我删除了链接对话框的'linkType'和'protocol'输入。
CKEDITOR.on( 'dialogDefinition', function( ev )
{
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
if ( dialogName == 'link' )
{
var infoTab = dialogDefinition.getContents( 'info' );
infoTab.remove( 'linkType' );
infoTab.remove( 'protocol' );
}
});
但是,当我输入'g'时,我会输入类似https://google.com的内容,而https://会被删除。
我检查了输出,它总是说http://忽略输入。
如何关闭这种愚蠢行为?
答案 0 :(得分:11)
经过大量的研究,调试和调整后,我终于成功了!!!!
我是这样做的:
CKEDITOR.on('dialogDefinition', function(e) {
// NOTE: this is an instance of CKEDITOR.dialog.definitionObject
var dd = e.data.definition;
if (e.data.name === 'link') {
dd.minHeight = 30;
// remove the unwanted tabs
dd.removeContents('advanced');
dd.removeContents('target');
dd.removeContents('upload');
// remove all elements from the 'info' tab
var tabInfo = dd.getContents('info');
while (tabInfo.elements.length > 0) {
tabInfo.remove(tabInfo.elements[0].id);
}
// add a simple URL text field
tabInfo.add({
type : 'text',
id : 'urlNew',
label : 'URL',
setup : function(data) {
var value = '';
if (data.url) {
if (data.url.protocol) {
value += data.url.protocol;
}
if (data.url.url) {
value += data.url.url;
}
} else if (data.email && data.email.address) {
value = 'mailto:' + data.email.address;
}
this.setValue(value);
},
commit : function(data) {
data.url = { protocol: '', url: this.getValue() };
}
});
}
});
答案 1 :(得分:1)
我担心没有办法改变它。您必须手动修改a few lines of the code才能使其正常运行。
答案 2 :(得分:1)
以下是我在v4.5.1中删除协议的方法:
CKEDITOR.on('dialogDefinition', function(ev) {
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
if (dialogName === 'link') {
var infoTab = dialogDefinition.getContents('info');
infoTab.remove('protocol');
var url = infoTab.get('url');
url.onKeyUp = function(){};
url.setup = function(data) {
this.allowOnChange = false;
if (data.url) {
var value = '';
if (data.url.protocol) {
value += data.url.protocol;
}
if (data.url.url) {
value += data.url.url;
}
this.setValue(value);
}
this.allowOnChange = true;
};
url.commit = function(data) {
data.url = { protocol: '', url: this.getValue() };
};
}
});
答案 3 :(得分:0)
对于像我这样的懒人,只需做一个快速的核心文件黑客:
d=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);
http|https|ftp|
如果重新加载后它不起作用,这可能是缓存问题。在私人模式下打开浏览器,导航到您的ckeditor并再次尝试。祝你好运。
答案 4 :(得分:0)
我最近发现了隐藏链接类型的方法,因此您不必完全删除它(我认为它也适用于协议 ,但没有测试它),这是通过将样式设置为dispaly : none
如下:
infoTab.get( 'linkType' ).style = 'display: none';
我回答了同样的问题here
希望这能有所帮助!