Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save KernelLeak/4619523 to your computer and use it in GitHub Desktop.
Save KernelLeak/4619523 to your computer and use it in GitHub Desktop.
Patch for IE8's event handler problems.
Index: jquery.contextMenu.js
===================================================================
--- jquery.contextMenu.js (revision 1014)
+++ jquery.contextMenu.js (working copy)
@@ -403,8 +403,13 @@
e.stopPropagation();
},
key: function(e) {
- var opt = $currentTrigger.data('contextMenu') || {};
+ if (!$currentTrigger)
+ return;
+ var opt = $currentTrigger.data('contextMenu');
+ if (!opt)
+ return;
+
switch (e.keyCode) {
case 9:
case 38: // up
@@ -534,8 +539,11 @@
// select previous possible command in menu
prevItem: function(e) {
e.stopPropagation();
- var opt = $(this).data('contextMenu') || {};
+ var opt = $(this).data('contextMenu');
+ if (!opt)
+ return;
+
// obtain currently selected menu
if (opt.$selected) {
var $s = opt.$selected;
@@ -577,8 +585,11 @@
// select next possible command in menu
nextItem: function(e) {
e.stopPropagation();
- var opt = $(this).data('contextMenu') || {};
+ var opt = $(this).data('contextMenu');
+ if (!opt)
+ return;
+
// obtain currently selected menu
if (opt.$selected) {
var $s = opt.$selected;
@@ -625,6 +636,9 @@
opt = data.contextMenu,
root = data.contextMenuRoot;
+ if (!root || !opt)
+ return;
+
root.$selected = opt.$selected = $this;
root.isInput = opt.isInput = true;
},
@@ -635,17 +649,26 @@
opt = data.contextMenu,
root = data.contextMenuRoot;
+ if (!root || !opt)
+ return;
+
root.isInput = opt.isInput = false;
},
// :hover on menu
menuMouseenter: function(e) {
var root = $(this).data().contextMenuRoot;
+ if (!root)
+ return;
+
root.hovering = true;
},
// :hover on menu
menuMouseleave: function(e) {
var root = $(this).data().contextMenuRoot;
+ if (!root)
+ return;
+
if (root.$layer && root.$layer.is(e.relatedTarget)) {
root.hovering = false;
}
@@ -658,6 +681,9 @@
opt = data.contextMenu,
root = data.contextMenuRoot;
+ if (!root || !opt)
+ return;
+
root.hovering = true;
// abort if we're re-entering
@@ -684,6 +710,9 @@
opt = data.contextMenu,
root = data.contextMenuRoot;
+ if (!root || !opt)
+ return;
+
if (root !== opt && root.$layer && root.$layer.is(e.relatedTarget)) {
root.$selected && root.$selected.trigger('contextmenu:blur');
e.preventDefault();
@@ -747,6 +776,9 @@
opt = data.contextMenu,
root = data.contextMenuRoot;
+ if (!root || !opt)
+ return;
+
$this.addClass('hover')
.siblings('.hover').trigger('contextmenu:blur');
@@ -767,6 +799,10 @@
root = data.contextMenuRoot;
$this.removeClass('hover');
+
+ if (!opt)
+ return;
+
opt.$selected = null;
}
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment