Use prototype to capture events so the menus work on IE
authorTom Hughes <tom@compton.nu>
Wed, 17 Nov 2010 15:47:59 +0000 (15:47 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 29 Nov 2010 12:20:24 +0000 (12:20 +0000)
public/javascripts/menu.js

index 7a0cbf4198042fcb658e53e499147f222444a189..d4e8bb65a198c19af1d9cde140893d4cfec31764 100644 (file)
@@ -27,7 +27,7 @@ function enterMenuAnchor(event, anchor, menu, delay) {
  * Callback called when the mouse leaves a menu anchor.
  */
 function leaveMenuAnchor(event, anchor, menu) {
-  var to = event.relatedTarget || event.toElement;
+  var to = event.relatedTarget;
 
   if (to != menu && !to.descendantOf(menu)) {
     menu.style.display = "none";
@@ -40,7 +40,7 @@ function leaveMenuAnchor(event, anchor, menu) {
  * Callback called when the mouse leaves a menu.
  */
 function leaveMenu(event, anchor, menu) {
-  var to = event.relatedTarget || event.toElement;
+  var to = event.relatedTarget;
 
   if (to != anchor && !to.descendantOf(menu)) {
     menu.style.display = "none";
@@ -56,7 +56,7 @@ function createMenu(anchorid, menuid, delay) {
   var anchor = $(anchorid);
   var menu = $(menuid);
 
-  anchor.onmouseover = function (event) { enterMenuAnchor(anchor, anchor, menu, delay) };
-  anchor.onmouseout = function (event) { leaveMenuAnchor(event, anchor, menu) };
-  menu.onmouseout = function (event) { leaveMenu(event, anchor, menu) };
+  anchor.observe("mouseover", function (event) { enterMenuAnchor(anchor, anchor, menu, delay) });
+  anchor.observe("mouseout", function (event) { leaveMenuAnchor(event, anchor, menu) });
+  menu.observe("mouseout", function (event) { leaveMenu(event, anchor, menu) });
 }