|
1013 | 1013 |
|
1014 | 1014 | root.accesskeys || (root.accesskeys = {});
|
1015 | 1015 |
|
| 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 | + |
1016 | 1035 | // create contextMenu items
|
1017 | 1036 | $.each(opt.items, function (key, item) {
|
1018 | 1037 | var $t = $('<li class="context-menu-item"></li>').addClass(item.className || ''),
|
|
1042 | 1061 | for (var i = 0, ak; ak = aks[i]; i++) {
|
1043 | 1062 | if (!root.accesskeys[ak]) {
|
1044 | 1063 | 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 | + } |
1046 | 1070 | break;
|
1047 | 1071 | }
|
1048 | 1072 | }
|
|
1066 | 1090 | $t.addClass('context-menu-html ' + root.classNames.notSelectable);
|
1067 | 1091 | } else if (item.type) {
|
1068 | 1092 | $label = $('<label></label>').appendTo($t);
|
1069 |
| - $('<span></span>').html(item._name || item.name).appendTo($label); |
| 1093 | + createNameNode(item).appendTo($t); |
| 1094 | + |
1070 | 1095 | $t.addClass('context-menu-input');
|
1071 | 1096 | opt.hasTypes = true;
|
1072 | 1097 | $.each([opt, root], function (i, k) {
|
|
1128 | 1153 | break;
|
1129 | 1154 |
|
1130 | 1155 | case 'sub':
|
1131 |
| - $('<span></span>').html(item._name || item.name).appendTo($t); |
| 1156 | + createNameNode(item).appendTo($t); |
| 1157 | + |
1132 | 1158 | item.appendTo = item.$node;
|
1133 | 1159 | op.create(item, root);
|
1134 | 1160 | $t.data('contextMenu', item).addClass('context-menu-submenu');
|
|
1146 | 1172 | k.callbacks[key] = item.callback;
|
1147 | 1173 | }
|
1148 | 1174 | });
|
1149 |
| - $('<span></span>').html(item._name || item.name || '').appendTo($t); |
| 1175 | + createNameNode(item).appendTo($t); |
1150 | 1176 | break;
|
1151 | 1177 | }
|
1152 | 1178 |
|
|
0 commit comments