操作系统:
Windows7 64
浏览器版本:
Firefox
KindEditor版本:
4.1.10
自定义菜单代码:
editor.addContextmenu({
title: "替换图片",
click : function() {
alert('clicked');
},
cond : function() {
// console.log(this);
return true;
},
});
修复的代码:
function _bindContextmenuEvent() {
var self = this, doc = self.edit.doc;
K(doc).contextmenu(function(e) {
if (self.menu) {
self.hideMenu();
}
if (!self.useContextmenu) {
e.preventDefault();
return;
}
if (self._contextmenus.length === 0) {
return;
}
var maxWidth = 0, items = [], prevItem = null;
_each(self._contextmenus, function() {
if (this.title == '-') {
if (prevItem == null || prevItem.title == '-') {
return ;
}
items.push(this);
prevItem = this;
return;
}
if (this.cond && this.cond()) {
items.push(this);
prevItem = this;
if (this.width && this.width > maxWidth) {
maxWidth = this.width;
}
}
});
while (items.length > 0 && items[0].title == '-') {
items.shift();
}
while (items.length > 0 && items[items.length - 1].title == '-') {
items.pop();
}
if (items.length > 0) {
e.preventDefault();
var pos = K(self.edit.iframe).pos(),
menu = _menu({
x : pos.x + e.clientX,
y : pos.y + e.clientY,
width : maxWidth,
css : { visibility: 'hidden' },
shadowMode : self.shadowMode
});
_each(items, function() {
if (this.title) {
menu.addItem(this);
}
});
var docEl = _docElement(menu.doc),
menuHeight = menu.div.height();
if (e.clientY + menuHeight >= docEl.clientHeight - 100) {
menu.pos(menu.x, _removeUnit(menu.y) - menuHeight);
}
menu.div.css('visibility', 'visible');
self.menu = menu;
}
});
}
另外:这个算法可以减少一次循环。
PS:还有是cond参数必需是函数,而文档中是bool值
PSS:论坛怎么没有找出密码的功能,要反馈个问题这么难,不应该要登录才能反馈