Spry Dropdown Menu problem in Mobile Safari (iPad)

I've used the stack SpryMenuBar.js in Dreamweaver to create a dropdown menu for a client (XponentMD.com).
When I Did a pass to optimize the site for the iPad, I found that the menu does not work properly. When you touch the top-level category, you go directly to the linked page and don't trigger the dropdown categories. I believe is it because the touch screen interface does not recognize focus and blur events.
It there and updated version of the SpryMenuBar.js that accommodates touch screen browsers like mobile Safari?

Thanks for your answers.
Looks like the browser on iPad simulator doesn't behave like the real touch device, because on iPad itself definitely all unmodified Spry 2.0 menus and also that example ( http://nwneighborhoodvet.com/ ) don't work properly. When I touch "About Us" on http://nwneighborhoodvet.com/, then it immediately loads http://nwneighborhoodvet.com/pages/about-us.html instead of displaying the drop down menu.
Somehow I also don't understand your versioning scheme. I downloaded today again the so called Spry 2.0 Dropdown Menu with the Widget Browser and when I install it on my site the directory with the CSS and Javascripts inside is called Spry-UI-1.7. When this is supposed to be Spry 2.0, why don't you call it Spry-UI-2.7 or 2.0.7 or something similar? Or do I get the wrong version from that strange Widget Browser/Dreamweaver CS5?
My test page (should be unmodified and it's not formatted properly at the moment) is http://www.safeexambrowser.org/Templates/main-D.dwt, also doesn't work properly on iPad.
This is a example (jQuery Superfish) which is actually working on iPad: http://users.tpg.com.au/j_birch/plugins/superfish/#examples (see the menu below "The result:".

Similar Messages

  • Spry dropdown menu problem

    I've been working on a drop down menu for a site for a few
    months now. I'm using the Spry Widget. I can't seem to get it
    working right. I had used the drop down menu feature without
    problems in CS2, but now that I have CS3, I'm having problems. I
    use a Mac and am checking the site on a PC. The problem is in IE on
    the PC.
    Here is the site and page with the problem:
    http://www.nectfarmersmarket.org/farms.html
    The menu item "Participating Farms" has a drop down menu.
    Everything works fine on my Mac using FF and Safari. On the PC,
    using IE, only some of the links to the page anchors work in the
    drop down menu. The ones that don't work for me are: Duhamel Farm,
    Palazzi, Stone Farm, and Woodstock Farm.
    Since I assume it's user error :), today I recreated the page
    and the dropdown menu again from scratch:
    http://www.nectfarmersmarket.org/farmsC.html.
    And now more links don't work. These are the ones that don't work
    on this test page: Duhamel, Palazzi, Rachels, Stone and Woodstock.
    I have posted about this a while back, but I still can't
    figure it out and my client is getting a little impatient.
    TIA!

    In regards to the validation if you put that page through
    right now you will get a few errors. I will try to give them a
    quick rundown.
    - HR tags should look like <hr /> instead of <hr>
    which you have now. This is because there is no ending tag with HR
    tags so XHTML puts an end in the tag <hr />.
    -One error is a missing v in a closing div tag. You have
    </di> instead of </div>.
    -The final is with table tags, but with a quick glance I
    can't tell which tags are duplicate. Basically it appears as though
    there are one too many sets of closing tags. Would have to look
    closer at this to solve.
    In regards to the Drop-Down and anchors you may want to post
    this over at the Adobe Spry Forums because this is an odd issue and
    may be something that we have overlooked. So head over and post the
    link to the page so that they can see on that forum:
    http://www.adobe.com/go/labs_spry_pr1_forum
    Outside of that I really don't know what to say without
    rebuilding the menu from scratch and building a page locally on my
    test server which I won't really have time to do until probably the
    weekend and I know you want this solved as soon as possible. Wish
    there was more I could tell you but this has me stumped.

  • Spry Dropdown Menu properties hidden

    I am trying to create a spry dropdown menu but cannot see the light blue menu thing that you click on to edit the spry menu, and so therefore cannot edit it. It should pop up when you hover over the spry menu in design view but I get nothing. Please help

    See if this works:
    Place your cursor inside on of the menu items, look at the tag above the Property Inspector and you'll see the <ul.MenuBarHorizontal#MenuBar1> tag.
    (if it's a vertical menu, it'll say vertical instead of horizontal :-)
    Click on the tag  - does the editing box for the menu then show up?

  • Spry dropdown menu only works fully in Safari...

    http://www.charlespatrickjewelers.com/jewelry_pages/rings.html
    That is the link to my page. I have spry dropdowns set on the navbar for Rings, Bracelets, and watches.
    In IE and Firefox, only the rings dropdown is working, but for Safari every dropdown works. Can someone help me fix this?
    Thank you all!
    Aza

    Well, someone on another forum suggested I use css rollovers because both the spry and the swap image used the mouseover event, but I changed it and that didn't work. Can anyone here tell me why my spry navbar doesn't work in ie and Firefox?

  • Spry dropdown menu not dropping down and reversing order cs4

    Hi, thank you for reading my post.
    I am having problems with my spry menu bar not dropping down when
    I upload it to my site, I get bulleted lists. When I preview it, it works fine. Also, the menu is in reverse order (??) I've tried retyping it in the opposite order to see if that fixes it, but somehow it goes back to backwards. It should start with home at the left. I am trying to post my code, but it will not let me paste. How do I paste code? Sorry if thats a silly question.
    Thank you

    Hi, thank you for your replies. I set everything to left, which caused it to display correctly in dreamweaver. Thank you! I did enjoy the "wiggle" that I get from the menu items on hover, they move from right to left, will that cause problems if I change one back to right? I still am having trouble getting the menu bar to show on the website, Im still getting bullets.
    How do I put the css files? They might be on the site, but not in the right place, where should they be? I also made another site from the same template, and saved it to a folder in my site so it can be previewed. Will that cause problems? Both spry's are not working..... argh! Thank you to everyone for your help, I appreciate it, this is my first time using the spry menu feature. Thank you for the help on posting code. Here is a link to the site and the code:
    www.holly-parker.com
    JAVA:
    var Spry; if (!Spry) Spry = {}; if (!Spry.Widget) Spry.Widget = {};
    Spry.BrowserSniff = function()
    var b = navigator.appName.toString();
    var up = navigator.platform.toString();
    var ua = navigator.userAgent.toString();
    this.mozilla = this.ie = this.opera = this.safari = false;
    var re_opera = /Opera.([0-9\.]*)/i;
    var re_msie = /MSIE.([0-9\.]*)/i;
    var re_gecko = /gecko/i;
    var re_safari = /(applewebkit|safari)\/([\d\.]*)/i;
    var r = false;
    if ( (r = ua.match(re_opera))) {
      this.opera = true;
      this.version = parseFloat(r[1]);
    } else if ( (r = ua.match(re_msie))) {
      this.ie = true;
      this.version = parseFloat(r[1]);
    } else if ( (r = ua.match(re_safari))) {
      this.safari = true;
      this.version = parseFloat(r[2]);
    } else if (ua.match(re_gecko)) {
      var re_gecko_version = /rv:\s*([0-9\.]+)/i;
      r = ua.match(re_gecko_version);
      this.mozilla = true;
      this.version = parseFloat(r[1]);
    this.windows = this.mac = this.linux = false;
    this.Platform = ua.match(/windows/i) ? "windows" :
         (ua.match(/linux/i) ? "linux" :
         (ua.match(/mac/i) ? "mac" :
         ua.match(/unix/i)? "unix" : "unknown"));
    this[this.Platform] = true;
    this.v = this.version;
    if (this.safari && this.mac && this.mozilla) {
      this.mozilla = false;
    Spry.is = new Spry.BrowserSniff();
    // Constructor for Menu Bar
    // element should be an ID of an unordered list (<ul> tag)
    // preloadImage1 and preloadImage2 are images for the rollover state of a menu
    Spry.Widget.MenuBar = function(element, opts)
    this.init(element, opts);
    Spry.Widget.MenuBar.prototype.init = function(element, opts)
    this.element = this.getElement(element);
    // represents the current (sub)menu we are operating on
    this.currMenu = null;
    this.showDelay = 250;
    this.hideDelay = 600;
    if(typeof document.getElementById == 'undefined' || (navigator.vendor == 'Apple Computer, Inc.' && typeof window.XMLHttpRequest == 'undefined') || (Spry.is.ie && typeof document.uniqueID == 'undefined'))
      // bail on older unsupported browsers
      return;
    // Fix IE6 CSS images flicker
    if (Spry.is.ie && Spry.is.version < 7){
      try {
       document.execCommand("BackgroundImageCache", false, true);
      } catch(err) {}
    this.upKeyCode = Spry.Widget.MenuBar.KEY_UP;
    this.downKeyCode = Spry.Widget.MenuBar.KEY_DOWN;
    this.leftKeyCode = Spry.Widget.MenuBar.KEY_LEFT;
    this.rightKeyCode = Spry.Widget.MenuBar.KEY_RIGHT;
    this.escKeyCode = Spry.Widget.MenuBar.KEY_ESC;
    this.hoverClass = 'MenuBarItemHover';
    this.subHoverClass = 'MenuBarItemSubmenuHover';
    this.subVisibleClass ='MenuBarSubmenuVisible';
    this.hasSubClass = 'MenuBarItemSubmenu';
    this.activeClass = 'MenuBarActive';
    this.isieClass = 'MenuBarItemIE';
    this.verticalClass = 'MenuBarVertical';
    this.horizontalClass = 'MenuBarHorizontal';
    this.enableKeyboardNavigation = true;
    this.hasFocus = false;
    // load hover images now
    if(opts)
      for(var k in opts)
       if (typeof this[k] == 'undefined')
        var rollover = new Image;
        rollover.src = opts[k];
      Spry.Widget.MenuBar.setOptions(this, opts);
    // safari doesn't support tabindex
    if (Spry.is.safari)
      this.enableKeyboardNavigation = false;
    if(this.element)
      this.currMenu = this.element;
      var items = this.element.getElementsByTagName('li');
      for(var i=0; i<items.length; i++)
       if (i > 0 && this.enableKeyboardNavigation)
        items[i].getElementsByTagName('a')[0].tabIndex='-1';
       this.initialize(items[i], element);
       if(Spry.is.ie)
        this.addClassName(items[i], this.isieClass);
        items[i].style.position = "static";
      if (this.enableKeyboardNavigation)
       var self = this;
       this.addEventListener(document, 'keydown', function(e){self.keyDown(e); }, false);
      if(Spry.is.ie)
       if(this.hasClassName(this.element, this.verticalClass))
        this.element.style.position = "relative";
       var linkitems = this.element.getElementsByTagName('a');
       for(var i=0; i<linkitems.length; i++)
        linkitems[i].style.position = "relative";
    Spry.Widget.MenuBar.KEY_ESC = 27;
    Spry.Widget.MenuBar.KEY_UP = 38;
    Spry.Widget.MenuBar.KEY_DOWN = 40;
    Spry.Widget.MenuBar.KEY_LEFT = 37;
    Spry.Widget.MenuBar.KEY_RIGHT = 39;
    Spry.Widget.MenuBar.prototype.getElement = function(ele)
    if (ele && typeof ele == "string")
      return document.getElementById(ele);
    return ele;
    Spry.Widget.MenuBar.prototype.hasClassName = function(ele, className)
    if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
      return false;
    return true;
    Spry.Widget.MenuBar.prototype.addClassName = function(ele, className)
    if (!ele || !className || this.hasClassName(ele, className))
      return;
    ele.className += (ele.className ? " " : "") + className;
    Spry.Widget.MenuBar.prototype.removeClassName = function(ele, className)
    if (!ele || !className || !this.hasClassName(ele, className))
      return;
    ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
    // addEventListener for Menu Bar
    // attach an event to a tag without creating obtrusive HTML code
    Spry.Widget.MenuBar.prototype.addEventListener = function(element, eventType, handler, capture)
    try
      if (element.addEventListener)
       element.addEventListener(eventType, handler, capture);
      else if (element.attachEvent)
       element.attachEvent('on' + eventType, handler);
    catch (e) {}
    // createIframeLayer for Menu Bar
    // creates an IFRAME underneath a menu so that it will show above form controls and ActiveX
    Spry.Widget.MenuBar.prototype.createIframeLayer = function(menu)
    var layer = document.createElement('iframe');
    layer.tabIndex = '-1';
    layer.src = 'javascript:""';
    layer.frameBorder = '0';
    layer.scrolling = 'no';
    menu.parentNode.appendChild(layer);
    layer.style.left = menu.offsetLeft + 'px';
    layer.style.top = menu.offsetTop + 'px';
    layer.style.width = menu.offsetWidth + 'px';
    layer.style.height = menu.offsetHeight + 'px';
    // removeIframeLayer for Menu Bar
    // removes an IFRAME underneath a menu to reveal any form controls and ActiveX
    Spry.Widget.MenuBar.prototype.removeIframeLayer =  function(menu)
    var layers = ((menu == this.element) ? menu : menu.parentNode).getElementsByTagName('iframe');
    while(layers.length > 0)
      layers[0].parentNode.removeChild(layers[0]);
    // clearMenus for Menu Bar
    // root is the top level unordered list (<ul> tag)
    Spry.Widget.MenuBar.prototype.clearMenus = function(root)
    var menus = root.getElementsByTagName('ul');
    for(var i=0; i<menus.length; i++)
      this.hideSubmenu(menus[i]);
    this.removeClassName(this.element, this.activeClass);
    // bubbledTextEvent for Menu Bar
    // identify bubbled up text events in Safari so we can ignore them
    Spry.Widget.MenuBar.prototype.bubbledTextEvent = function()
    return Spry.is.safari && (event.target == event.relatedTarget.parentNode || (event.eventPhase == 3 && event.target.parentNode == event.relatedTarget));
    // showSubmenu for Menu Bar
    // set the proper CSS class on this menu to show it
    Spry.Widget.MenuBar.prototype.showSubmenu = function(menu)
    if(this.currMenu)
      this.clearMenus(this.currMenu);
      this.currMenu = null;
    if(menu)
      this.addClassName(menu, this.subVisibleClass);
      if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
       if(!this.hasClassName(this.element, this.horizontalClass) || menu.parentNode.parentNode != this.element)
        menu.style.top = menu.parentNode.offsetTop + 'px';
      if(Spry.is.ie && Spry.is.version < 7)
       this.createIframeLayer(menu);
    this.addClassName(this.element, this.activeClass);
    // hideSubmenu for Menu Bar
    // remove the proper CSS class on this menu to hide it
    Spry.Widget.MenuBar.prototype.hideSubmenu = function(menu)
    if(menu)
      this.removeClassName(menu, this.subVisibleClass);
      if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
       menu.style.top = '';
       menu.style.left = '';
      if(Spry.is.ie && Spry.is.version < 7)
       this.removeIframeLayer(menu);
    // initialize for Menu Bar
    // create event listeners for the Menu Bar widget so we can properly
    // show and hide submenus
    Spry.Widget.MenuBar.prototype.initialize = function(listitem, element)
    var opentime, closetime;
    var link = listitem.getElementsByTagName('a')[0];
    var submenus = listitem.getElementsByTagName('ul');
    var menu = (submenus.length > 0 ? submenus[0] : null);
    if(menu)
      this.addClassName(link, this.hasSubClass);
    if(!Spry.is.ie)
      // define a simple function that comes standard in IE to determine
      // if a node is within another node
      listitem.contains = function(testNode)
       // this refers to the list item
       if(testNode == null)
        return false;
       if(testNode == this)
        return true;
       else
        return this.contains(testNode.parentNode);
    // need to save this for scope further down
    var self = this;
    this.addEventListener(listitem, 'mouseover', function(e){self.mouseOver(listitem, e);}, false);
    this.addEventListener(listitem, 'mouseout', function(e){if (self.enableKeyboardNavigation) self.clearSelection(); self.mouseOut(listitem, e);}, false);
    if (this.enableKeyboardNavigation)
      this.addEventListener(link, 'blur', function(e){self.onBlur(listitem);}, false);
      this.addEventListener(link, 'focus', function(e){self.keyFocus(listitem, e);}, false);
    Spry.Widget.MenuBar.prototype.keyFocus = function (listitem, e)
    this.lastOpen = listitem.getElementsByTagName('a')[0];
    this.addClassName(this.lastOpen, listitem.getElementsByTagName('ul').length > 0 ? this.subHoverClass : this.hoverClass);
    this.hasFocus = true;
    Spry.Widget.MenuBar.prototype.onBlur = function (listitem)
    this.clearSelection(listitem);
    Spry.Widget.MenuBar.prototype.clearSelection = function(el){
    //search any intersection with the current open element
    if (!this.lastOpen)
      return;
    if (el)
      el = el.getElementsByTagName('a')[0];
      // check children
      var item = this.lastOpen;
      while (item != this.element)
       var tmp = el;
       while (tmp != this.element)
        if (tmp == item)
         return;
        try{
         tmp = tmp.parentNode;
        }catch(err){break;}
       item = item.parentNode;
    var item = this.lastOpen;
    while (item != this.element)
      this.hideSubmenu(item.parentNode);
      var link = item.getElementsByTagName('a')[0];
      this.removeClassName(link, this.hoverClass);
      this.removeClassName(link, this.subHoverClass);
      item = item.parentNode;
    this.lastOpen = false;
    Spry.Widget.MenuBar.prototype.keyDown = function (e)
    if (!this.hasFocus)
      return;
    if (!this.lastOpen)
      this.hasFocus = false;
      return;
    var e = e|| event;
    var listitem = this.lastOpen.parentNode;
    var link = this.lastOpen;
    var submenus = listitem.getElementsByTagName('ul');
    var menu = (submenus.length > 0 ? submenus[0] : null);
    var hasSubMenu = (menu) ? true : false;
    var opts = [listitem, menu, null, this.getSibling(listitem, 'previousSibling'), this.getSibling(listitem, 'nextSibling')];
    if (!opts[3])
      opts[2] = (listitem.parentNode.parentNode.nodeName.toLowerCase() == 'li')?listitem.parentNode.parentNode:null;
    var found = 0;
    switch (e.keyCode){
      case this.upKeyCode:
       found = this.getElementForKey(opts, 'y', 1);
       break;
      case this.downKeyCode:
       found = this.getElementForKey(opts, 'y', -1);
       break;
      case this.leftKeyCode:
       found = this.getElementForKey(opts, 'x', 1);
       break;
      case this.rightKeyCode:
       found = this.getElementForKey(opts, 'x', -1);
       break;
      case this.escKeyCode:
      case 9:
       this.clearSelection();
       this.hasFocus = false;
      default: return;
    switch (found)
      case 0: return;
      case 1:
       //subopts
       this.mouseOver(listitem, e);
       break;
      case 2:
       //parent
       this.mouseOut(opts[2], e);
       break;
      case 3:
      case 4:
       // left - right
       this.removeClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
       break;
    var link = opts[found].getElementsByTagName('a')[0];
    if (opts[found].nodeName.toLowerCase() == 'ul')
      opts[found] = opts[found].getElementsByTagName('li')[0];
    this.addClassName(link, opts[found].getElementsByTagName('ul').length > 0 ? this.subHoverClass : this.hoverClass);
    this.lastOpen = link;
    opts[found].getElementsByTagName('a')[0].focus();
            //stop further event handling by the browser
    return Spry.Widget.MenuBar.stopPropagation(e);
    Spry.Widget.MenuBar.prototype.mouseOver = function (listitem, e)
    var link = listitem.getElementsByTagName('a')[0];
    var submenus = listitem.getElementsByTagName('ul');
    var menu = (submenus.length > 0 ? submenus[0] : null);
    var hasSubMenu = (menu) ? true : false;
    if (this.enableKeyboardNavigation)
      this.clearSelection(listitem);
    if(this.bubbledTextEvent())
      // ignore bubbled text events
      return;
    if (listitem.closetime)
      clearTimeout(listitem.closetime);
    if(this.currMenu == listitem)
      this.currMenu = null;
    // move the focus too
    if (this.hasFocus)
      link.focus();
    // show menu highlighting
    this.addClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
    this.lastOpen = link;
    if(menu && !this.hasClassName(menu, this.subHoverClass))
      var self = this;
      listitem.opentime = window.setTimeout(function(){self.showSubmenu(menu);}, this.showDelay);
    Spry.Widget.MenuBar.prototype.mouseOut = function (listitem, e)
    var link = listitem.getElementsByTagName('a')[0];
    var submenus = listitem.getElementsByTagName('ul');
    var menu = (submenus.length > 0 ? submenus[0] : null);
    var hasSubMenu = (menu) ? true : false;
    if(this.bubbledTextEvent())
      // ignore bubbled text events
      return;
    var related = (typeof e.relatedTarget != 'undefined' ? e.relatedTarget : e.toElement);
    if(!listitem.contains(related))
      if (listitem.opentime)
       clearTimeout(listitem.opentime);
      this.currMenu = listitem;
      // remove menu highlighting
      this.removeClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
      if(menu)
       var self = this;
       listitem.closetime = window.setTimeout(function(){self.hideSubmenu(menu);}, this.hideDelay);
      if (this.hasFocus)
       link.blur();
    Spry.Widget.MenuBar.prototype.getSibling = function(element, sibling)
    var child = element[sibling];
    while (child && child.nodeName.toLowerCase() !='li')
      child = child[sibling];
    return child;
    Spry.Widget.MenuBar.prototype.getElementForKey = function(els, prop, dir)
    var found = 0;
    var rect = Spry.Widget.MenuBar.getPosition;
    var ref = rect(els[found]);
    var hideSubmenu = false;
    //make the subelement visible to compute the position
    if (els[1] && !this.hasClassName(els[1], this.MenuBarSubmenuVisible))
      els[1].style.visibility = 'hidden';
      this.showSubmenu(els[1]);
      hideSubmenu = true;
    var isVert = this.hasClassName(this.element, this.verticalClass);
    var hasParent = els[0].parentNode.parentNode.nodeName.toLowerCase() == 'li' ? true : false;
    for (var i = 1; i < els.length; i++){
      //when navigating on the y axis in vertical menus, ignore children and parents
      if(prop=='y' && isVert && (i==1 || i==2))
       continue;
      //when navigationg on the x axis in the FIRST LEVEL of horizontal menus, ignore children and parents
      if(prop=='x' && !isVert && !hasParent && (i==1 || i==2))
       continue;
      if (els[i])
       var tmp = rect(els[i]);
       if ( (dir * tmp[prop]) < (dir * ref[prop]))
        ref = tmp;
        found = i;
    // hide back the submenu
    if (els[1] && hideSubmenu){
      this.hideSubmenu(els[1]);
      els[1].style.visibility =  '';
    return found;
    Spry.Widget.MenuBar.camelize = function(str)
    if (str.indexOf('-') == -1){
      return str;
    var oStringList = str.split('-');
    var isFirstEntry = true;
    var camelizedString = '';
    for(var i=0; i < oStringList.length; i++)
      if(oStringList[i].length>0)
       if(isFirstEntry)
        camelizedString = oStringList[i];
        isFirstEntry = false;
       else
        var s = oStringList[i];
        camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
    return camelizedString;
    Spry.Widget.MenuBar.getStyleProp = function(element, prop)
    var value;
    try
      if (element.style)
       value = element.style[Spry.Widget.MenuBar.camelize(prop)];
      if (!value)
       if (document.defaultView && document.defaultView.getComputedStyle)
        var css = document.defaultView.getComputedStyle(element, null);
        value = css ? css.getPropertyValue(prop) : null;
       else if (element.currentStyle)
         value = element.currentStyle[Spry.Widget.MenuBar.camelize(prop)];
    catch (e) {}
    return value == 'auto' ? null : value;
    Spry.Widget.MenuBar.getIntProp = function(element, prop)
    var a = parseInt(Spry.Widget.MenuBar.getStyleProp(element, prop),10);
    if (isNaN(a))
      return 0;
    return a;
    Spry.Widget.MenuBar.getPosition = function(el, doc)
    doc = doc || document;
    if (typeof(el) == 'string') {
      el = doc.getElementById(el);
    if (!el) {
      return false;
    if (el.parentNode === null || Spry.Widget.MenuBar.getStyleProp(el, 'display') == 'none') {
      //element must be visible to have a box
      return false;
    var ret = {x:0, y:0};
    var parent = null;
    var box;
    if (el.getBoundingClientRect) { // IE
      box = el.getBoundingClientRect();
      var scrollTop = doc.documentElement.scrollTop || doc.body.scrollTop;
      var scrollLeft = doc.documentElement.scrollLeft || doc.body.scrollLeft;
      ret.x = box.left + scrollLeft;
      ret.y = box.top + scrollTop;
    } else if (doc.getBoxObjectFor) { // gecko
      box = doc.getBoxObjectFor(el);
      ret.x = box.x;
      ret.y = box.y;
    } else { // safari/opera
      ret.x = el.offsetLeft;
      ret.y = el.offsetTop;
      parent = el.offsetParent;
      if (parent != el) {
       while (parent) {
        ret.x += parent.offsetLeft;
        ret.y += parent.offsetTop;
        parent = parent.offsetParent;
      // opera & (safari absolute) incorrectly account for body offsetTop
      if (Spry.is.opera || Spry.is.safari && Spry.Widget.MenuBar.getStyleProp(el, 'position') == 'absolute')
       ret.y -= doc.body.offsetTop;
    if (el.parentNode)
       parent = el.parentNode;
    else
      parent = null;
    if (parent.nodeName){
      var cas = parent.nodeName.toUpperCase();
      while (parent && cas != 'BODY' && cas != 'HTML') {
       cas = parent.nodeName.toUpperCase();
       ret.x -= parent.scrollLeft;
       ret.y -= parent.scrollTop;
       if (parent.parentNode)
        parent = parent.parentNode;
       else
        parent = null;
    return ret;
    Spry.Widget.MenuBar.stopPropagation = function(ev)
    if (ev.stopPropagation)
      ev.stopPropagation();
    else
      ev.cancelBubble = true;
    if (ev.preventDefault)
      ev.preventDefault();
    else
      ev.returnValue = false;
    Spry.Widget.MenuBar.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
    if (!optionsObj)
      return;
    for (var optionName in optionsObj)
      if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
       continue;
      obj[optionName] = optionsObj[optionName];
    CSS:
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 14px;
    cursor: default;
    color: #FCC;
    background-color: #000;
    font-family: Verdana, Geneva, sans-serif;
    font-style: normal;
    font-weight: bold;
    text-align: center;
    float: left;
    width: 880px;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
    margin: 0;
    padding: 0;
    list-style-type: none;
    position: relative;
    text-align: center;
    cursor: pointer;
    width: 145.8px;
    background-color: #000;
    color: #FCC;
    float: left;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
    z-index: 1000;
    background-color: #000;
    color: #FCC;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    z-index: 1020;
    cursor: default;
    width: 145.8px;
    position: absolute;
    left: -1000em;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
    left: auto;
    color: #FCC;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
    width: 145.8px;
    clear: left;
    float: left;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
    left: 0;
    top: 0;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
    position: absolute;
    margin: -5% 0 0 95%;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
    border: 1px solid #CCC;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
    display: block;
    cursor: pointer;
    background-color: #000;
    padding: 0.5em 0.75em;
    color: #FCC;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
    background-color: #333;
    color: #FFF;
    font-weight: bold;
    font-family: Verdana, Geneva, sans-serif;
    text-align: right;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
    background-color: #000;
    color: #FCC;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
    background-image: url(SpryMenuBarDown.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    color: #FCC;
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
    background-image: url(SpryMenuBarRight.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
    background-image: url(SpryMenuBarDownHover.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
    background-image: url(SpryMenuBarRightHover.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
    position: absolute;
    z-index: 1010;
    filter:alpha(opacity:0.1);
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
    ul.MenuBarHorizontal li.MenuBarItemIE
    display: inline;
    f\loat: left;
    background: #000;
    Home page code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!-- TemplateBeginEditable name="doctitle" -->
    <title>Holly Parker - Fashion, Commercial, Swim, Runway Model Los Angeles</title>
    <!-- TemplateEndEditable -->
    <!-- TemplateBeginEditable name="head" -->
    <!-- TemplateEndEditable -->
    <!-- TemplateBeginEditable name="mainstyling" -->
    <style type="text/css">
    <!--
    body {
    font: georgia;
    background: #FFF;
    margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
    padding: 0;
    text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
    color: #000;
    font-family: "Forgotten Futurist Shadow";
    background-image: url();
    background-color: #000;
    padding-top: 0px;
    .oneColFixCtrHdr #container {
    width: 1200px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
    background: #000000;
    margin: 0 auto; /* the auto margins (in conjunction with a width) center the page */
    border: 1px solid #000000;
    text-align: left; /* this overrides the text-align: center on the body element. */
    color: #FFF;
    .oneColFixCtrHdr #header {
    padding-top: 5px;
    padding-bottom: 0px;
    color: #FFF;
    background-color: #000;
    position: static;
    text-align: center;
    .oneColFixCtrHdr #header h1 {
    margin: 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 60px;
    color: #F39;
    font-weight: bolder;
    text-align: center;
    margin-bottom: 0px;
    .oneColFixCtrHdr #mainContent {
    padding: 0; /* remember that padding is the space inside the div box and margin is the space outside the div box */
    background: #FFFFFF;
    font-family: "SF Foxboro Script";
    color: #FFF;
    font-size: 18px;
    background-color: #000;
    font-weight: bold;
    text-align: center;
    padding-top: 0px;
    .oneColFixCtrHdr #footer {
    padding: 0 10px;
    color: #FCC;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 12px;
    background-color: #000;
    text-align: center;
    .oneColFixCtrHdr #footer p {
    margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
    padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
    font-size: 10px;
    .navigation {
    background-color: #000;
    text-align: center;
    float: left;
    padding-left: 60px;
    -->
    </style>
    <!-- TemplateEndEditable -->
    <script src="file:///C|/Users/HOLLY/Desktop/Holly Parker Website/SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
    <link href="file:///C|/Users/HOLLY/Desktop/Holly Parker Website/SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
    </head>
    <body class="oneColFixCtrHdr">
    <div id="container">
      <div id="header">
        <h1><img src="images/holly-logo-top.jpg" width="875" height="139" /></h1>
        <table width="800" border="0" cellspacing="0" cellpadding="4">
          <tr>
            <td align="right" valign="middle" bgcolor="#FFE8FF" class="navigation"><!-- TemplateBeginEditable name="navieditable" -->
              <ul id="MenuBar1" class="MenuBarHorizontal">
                <li><a href="index.html">MAIN</a></li>
                <li><a href="pone.html" class="MenuBarItemSubmenu">PHOTOS</a>
                  <ul>
                    <li><a href="pone.html">Un</a></li>
                    <li><a href="ptwo.html">Deux</a></li>
                    <li><a href="pthree.html">Trois</a></li>
                    <li><a href="pfour.html">Quatre</a></li>
                  </ul>
                </li>
                <li><a href="me.html">ME</a>            </li>
                <li><a href="connect.html">CONNECT</a></li>
                <li><a href="links.html">LINKS</a></li>
                <li><a href="video.html">VIDEO</a></li>
              </ul>
            <!-- TemplateEndEditable --></td>
          </tr>
        </table>
        <!-- end #header -->
      </div>
      <div id="mainContent"><!-- TemplateBeginEditable name="bodyedit" -->
        <p><img src="images/holly-parker-pink-beauty-web.jpg" width="265" height="349" /></p>
      <!-- TemplateEndEditable -->
      <!-- end #mainContent --></div>
      <div id="footer"><!-- TemplateBeginEditable name="footeredit" -->
        <p>HOLLY PARKER  © 2010 ALL RIGHTS RESERVED  </p>
    <!-- TemplateEndEditable --></div></div>
    <script type="text/javascript">
    <!--
    var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"../SpryAssets/SpryMenuBarDownHover.gif", imgRight:"../SpryAssets/SpryMenuBarRightHover.gif"});
    //-->
          </script>
    </body>
    </html>

  • SPRY Vertical Menu Problem (IE Hack?)

    I'm having a problem with the Spry vertical menu bar. The one
    I created works fine in Firefox and in Safari, but not in Internet
    Explorer. In IE the sub-menu containers open AT THE TOP of the menu
    bar, and not next to the selected menu item. I'm not sure how to
    fix it. Any help is appreciated.
    You can see the problem here (view in IE and roll over any of
    the menu items in the middle or lower part of the menu bar):
    http://southerncharmgifts.net/thesouthernsportsman/html/ssarchery.html

    I downloaded the Spry update but it didn't fix the problem.
    It changed my menu box to white, when it should have remained
    black. Hopefully I can fix it. But still the same problem with IE.
    This is really bad! Any way to reverse the update?
    quote:
    Originally posted by:
    SnakEyez02
    First your Spry is out of date. Please click on the following
    link below to get the Spry Updater. It will be inside the package
    as an Extension. Then next time you start up DW click on Sites and
    then you will see an option at the bottom to update Spry in your
    site.
    http://labs.adobe.com/technologies/spry/home.html
    Looking at your page it appears to validate except for one
    thing. All images need alt tags assigned to them.
    See if updating the Spry helps.
    Also there is a Spry forum that Adobe does check in case
    there are bugs. The link to the forum is on that page and I will
    also link it below:
    http://www.adobe.com/go/labs_spry_pr1_forum
    With regards to Pitmaster you can check the above links but
    depending on the issue it could be something else. So if you need
    further assistance post a link to your page.

  • Spry Horizontal Menu Problem

    I switched to version 2 of the Spry Menubar due to sub-menu problems associated with iPads. Now I am having problems with sub-menus within IE8.  It is not possible to *quickly* scroll down the menu without the sub-menu disappearing.  Here is an example:
    http://gerberanalytics.com/tennis/tennis_header_test.php
    It works ok with CS6 in the design view, but not on the local test server or on the production server.  Any ideas?
    Thanks in advance for your help.

    Gramps,
    I appreciate you providing this.  I took a closer look at the errors and I made a few changes but this validator service continued to kick out errors.  In fact if you put Adobe's own web site into this application (http://www.adobe.com), it comes up with 44 errors.  As I mentioned before, the Adobe Widget Browser application for Spry Menubar 2 is essentially creating my code so I doubted that this was an actual problem.
    While I have been interacting with you, I have also been awaiting an update from Adobe's senior technology staff for a solution.  I heard from them today.  Here is what Adobe said:  Spry Menubar 2 has problems with IE 8 and IE 9 (which I already knew).  The first person with whom I spoke at Adobe suggested that my customers running the IE 8 and IE 9 browsers should switch to a different browser, such as Chrome.  I explained that asking users to switch was not a solution -- that's about 35% of my users.  I then asked to speak with a manager / supervisor. 
    My conversation with the supervisor went a bit better.  He told me that those running IE 8 and IE 9 on a Windows XP machine are ok.  Vista is a problem.  Windows 7 is also iffy.  My machine is a Vista and my wife's machine is a Windows 7.  It does not work on either machine for us.
    I told him that Spry Menubar 2 should be withdrawn from their site or there should be a warning to insure that people are aware of the problems.  He didn't say that they would do that.  He suggested that I should check back with him in a couple of weeks.  I did not get a warm and fuzzy feeling that this was a priority item for them.
    At this point, I'm bailing on Spry Menubar 2.  I may return to Spry Menubar 1.6 which requires a "double tap" on the nav buttons to work on an iPad.  I may also check out jQuery.
    Thanks for the suggestions but it looks like Adobe has some serious issues.  If your customers are using iPads (and they are), Spry Menubar 2 is not a solution to fix the problems encountered in Spry 1.4 and Spry 1.6.
    Scott

  • Another SPRY horizontal menu problem with IE7

    I posted this before, with no responses, but I think
    I've narrowed it down to a CSS response problem with IE7.0. If you
    view the attached link in Firefox or Opera, the menu background
    color responds correctly on the drop downs. In IE7, the
    background-color is ignored, causing the menu to be translucent
    and, uh, ugly. Has anyone else had an issue with the
    background-color CSS attribute in the SPRY horizontal menu css not
    working?
    HELLLLLP! and, uh, Thanks,
    Karl
    Prototype
    link using spry, css, ajax sprites and other magic.

    >>
    Regrettably, the silence from the forum has been deafening.
    I'm not sure if folks are just wary of SPRY and AJAX issues right
    now because they're so new or if it's the summer heat
    >>
    guess it´s all of that :-) But folks visiting these more
    "general" Dreamweaver forums are not necessarily Spry experts
    respectively might not even be interested in that -- you´ll
    certainly get more response when posting Spry related questions in
    the
    Spry
    forums @ Adobe Labs

  • Spry vertical menu problem with IE

    We implemented the spry vertical menu for showing the
    categories of a products catalog. It has almost 1800 categories
    organizad at about 5 levels, some categories have about 30
    subcategories. These categories are extrated from a database.
    It works in mozilla but in IE present this problem:
    - The response time is slow when you change from one category
    to ahother. And the effiecience decrease.
    See in
    http://edit.panamericana.com.co/
    Thanks,
    Alejandro

    I tried in Firefox 3 and IE7 and they both seemed fairly slow
    for any action to take place. But IE7 did seem pretty slugish.
    It seems that you're already determined what the issue is,
    you have waaaaaay too many menu items. Seems to me that that number
    of items don't belong in a menu. There are even menus that are too
    long to appear entirely on the page, so they can't be easily
    accessed without accidentally hiding the menus again, which I did
    several times. IN particular:
    Cartuchos > Technologica
    If you cannot change to a different format to show all of the
    items, then perhaps you can split up the menu so that you don't
    have too many at one time. I checked the code of your page and it
    seems that you've got a lot of other scripting going on there
    besides Spry, so is the issue with Spry or with everything else
    you're trying to do with that menu. If you can try to recreate the
    page with only the menu items on it (and not pulled in dynamically
    on the fly), and then add back to your page a bit a time, you might
    be able to find out what is really causing the delays.

  • Spry Horizontal Menu problem with YouTube

    I am trying to place YouTube videos in my website.
    With a YouTube video embedded, the dropdown menu is behind YouTube and most of the links are note accessible.: http://gigharborrealestate.com/youtube/
    Is there a way to have the Spry menu dropdown on top of the YouTube video?
    Here is an example of the dropdowns working when I inserted a flash video: http://gigharborrealestate.com/782/
    Thank you  very much for your help,
    Mike

    Hi Arnout,
    Thank you for responding to my question. I am not using a flash movie, I am embeding a Youtube video. Is it possible to add wmode="transparent" to a Youtube video?  It would be great if you could give me a bit more info.
    Thank you,
    Mike

  • Spry horizontal menu problem in IE and Chrome

    First I'd like to express my frustration with spry. I spend way too much time trying to "band-aid" spry to work in different browers. I'll admit that I'm new to the web game but I seem to spend a large percentage of my time simply trying different "fixes" to something that I don't think should be this much of a problem. Regardless ...
    I've made a pretty simple web page, put a spry horizontal menu on it and it works and displays just like it's supposed to in FF but IE and Chrome both seem to have a problem with it. Currently there are no links attached to it but that's not my problem - getting it to display correctly is. Possibly this issuehas already been addressed but I couldn't find it in the forum. Webpage can be viewed here
    I've put (what I believe to be) the relevant css on the Main Content section of the page. Any help will be much appreciated. Thanks in advance.

    I am so glad that you started again, this is the best way to learn, trial and error.
    To fix your woes to date, have a look at the following
    .thrColFixHdr #header {padding:0;} /*remove the padding from the menubar container*/
    ul.MenuBarHorizontal{width:auto;margin:0;} /*remove the fixed width and auto margin*/
    ul.MenuBarHorizontal li{width:16.6667%;} /*spread the 6 items over the full width 6*16.6667% = 100%*/
    ul.MenuBarHorizontal ul a{text-align:left;} /*Set the the alignment back to left for any menu item links that are in a sub menu*/
    To add images to your menu items have a look at the following http://labs.adobe.com/technologies/spry/samples/menubar/MenuBarSample.html, you will find it at the bottom of the page.
    I did not realise that SolidWorks still existed, started using it in the mid 1990's, excellent product, easy to use and promotes fast product development. I lost track of it when I went for retirement 10 years ago.
    Gramps.

  • Dropdown menu problem in internet explorer

    i'm pretty new to css, and i'm having trouble in regards to
    the dropdown menu option (dreamweaver cs3). i've made a basic
    template, and everything looks fine (preliminarily!) in firefox,
    but in IE the dropdown menus have scrollbars and the word "false"
    floating in them. they're also positioned wrong. any advice on
    which styles are the problem? i've tried troubleshooting but its
    had little effect. here is the link:
    http://happyowlglass.com/happyowl-template.html
    many thanks!

    Have a look at the following
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        position: absolute;
        z-index: 1010;
        filter:alpha(opacity:0.1);
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
        ul.MenuBarHorizontal li.MenuBarItemIE
        display: inline;
        f\loat: none;
        background: #FFF;
    The original value is left.
    Gramps

  • IE 7 - CSS Issues with Spry dropdown Menu *HELP*

    I am using a spry horizontal dropdown menu generated in DW. The menus look consistant in all other browsers except ie7 -  When the drop down menu occurs they all appear to the right and not directly under its menu item.. Looked around in the Css and i cant seem to find the right rule to make the change in ie7 only... was planning on using a css conditional statement to shift them left.. But im not having any luck.. HELP!
    Thanks so much in advance!

    Sorry.. Here is the link.. Thanks so much for your willingness to help!
    http://soldesign.us/_working/WEBSITE_BoulderPlasticSurgery/index.html

  • Dreamweaver spry sub menu problem in IE

    Hi. I'm having a problem with my spry sub menu being offset
    from the main drop down menu when viewed in IE. Any help? Thanks!
    Link:
    http://thinkstreet.net/websites/Nathan/AustinDrainageSite/index.html

    The position of Spry Menu Bar submenus is controlled by the
    margin property on submenu ul tags.
    Locate the ul.MenuBarVertical ul or ul.MenuBarHorizontal ul
    rule.
    Change the margin: -5% 0 0 95%; default value to the desired
    values.

  • Spry Horizontal Menu problem in IE

    I am a new Dreamweaver user and utilized the Spry horizontal
    menu in a site that I am redesigning. The menus look great in
    firefox, but do not load properly in internet explorer. I am hoping
    to be able to resolve this problem as the menus look so good in
    firefox.
    You can view the page at
    http://www.greenlevel.abcchicagolimo.com

    Hi clead16,
    What do you mean by "do not load properly in internet
    explorer"? I checked the site in IE6 and IE7 and it the menus
    render OK.
    You may want to also take a look at the
    Menu
    Samples and
    centering
    a horizontal menu
    on Adobe labs.
    -- Florin

Maybe you are looking for