Skip to content

Commit c2af55c

Browse files
committed
Merge pull request #299 from arai-a/accesskey
Do not use .html() to markup accesskey thanks @arai-a
2 parents 0303aa5 + 873a63d commit c2af55c

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

src/jquery.contextMenu.js

+30-4
Original file line numberDiff line numberDiff line change
@@ -1013,6 +1013,25 @@
10131013

10141014
root.accesskeys || (root.accesskeys = {});
10151015

1016+
function createNameNode(item) {
1017+
var $name = $('<span></span>');
1018+
if (item._accesskey) {
1019+
if (item._beforeAccesskey) {
1020+
$name.append(document.createTextNode(item._beforeAccesskey));
1021+
}
1022+
$('<span></span>')
1023+
.addClass('context-menu-accesskey')
1024+
.text(item._accesskey)
1025+
.appendTo($name);
1026+
if (item._afterAccesskey) {
1027+
$name.append(document.createTextNode(item._afterAccesskey));
1028+
}
1029+
} else {
1030+
$name.text(item.name);
1031+
}
1032+
return $name;
1033+
}
1034+
10161035
// create contextMenu items
10171036
$.each(opt.items, function (key, item) {
10181037
var $t = $('<li class="context-menu-item"></li>').addClass(item.className || ''),
@@ -1042,7 +1061,12 @@
10421061
for (var i = 0, ak; ak = aks[i]; i++) {
10431062
if (!root.accesskeys[ak]) {
10441063
root.accesskeys[ak] = item;
1045-
item._name = item.name.replace(new RegExp('(' + ak + ')', 'i'), '<span class="context-menu-accesskey">$1</span>');
1064+
var matched = item.name.match(new RegExp('^(.*?)(' + ak + ')(.*)$', 'i'));
1065+
if (matched) {
1066+
item._beforeAccesskey = matched[1];
1067+
item._accesskey = matched[2];
1068+
item._afterAccesskey = matched[3];
1069+
}
10461070
break;
10471071
}
10481072
}
@@ -1066,7 +1090,8 @@
10661090
$t.addClass('context-menu-html ' + root.classNames.notSelectable);
10671091
} else if (item.type) {
10681092
$label = $('<label></label>').appendTo($t);
1069-
$('<span></span>').html(item._name || item.name).appendTo($label);
1093+
createNameNode(item).appendTo($t);
1094+
10701095
$t.addClass('context-menu-input');
10711096
opt.hasTypes = true;
10721097
$.each([opt, root], function (i, k) {
@@ -1128,7 +1153,8 @@
11281153
break;
11291154

11301155
case 'sub':
1131-
$('<span></span>').html(item._name || item.name).appendTo($t);
1156+
createNameNode(item).appendTo($t);
1157+
11321158
item.appendTo = item.$node;
11331159
op.create(item, root);
11341160
$t.data('contextMenu', item).addClass('context-menu-submenu');
@@ -1146,7 +1172,7 @@
11461172
k.callbacks[key] = item.callback;
11471173
}
11481174
});
1149-
$('<span></span>').html(item._name || item.name || '').appendTo($t);
1175+
createNameNode(item).appendTo($t);
11501176
break;
11511177
}
11521178

0 commit comments

Comments
 (0)