The JS for Nice menus, which is mostly used for IE6 compatiblity, seems to be causing more and more issues in IE7. The only reason IE7 is using the JS at all is due to a bug that causes the "ghost effect" for children items. There is an old issue about that and the resolution at the time was to have IE7 use JS because the CSS problem was pretty gnarly. #136702: Disappearing links in IE 7.0

Instead of fighting JS fires I'd like to turn back to looking at resolving the ghost issue so we can simply remove the JS for IE7. This will also set us up nicely to remove the JS entirely when IE6 is EOL.

CommentFileSizeAuthor
#5 nice_menus-ie6-only-js_269857-5.patch1.04 KBadd1sun

Comments

PawelPohl’s picture

Status: Active » Needs review

I just ran into this problem. Seems kinda serious, actually crashes IE7 on my machine. Can be solved by changing this line in nice_menus.module

drupal_set_html_head('<!--[if IE]>

into

drupal_set_html_head('<!--[if lt IE 7]>

IE7 seems to be handling the pure-CSS version correctly, at least on my site.

add1sun’s picture

Status: Needs review » Active

I know *how* to remove the JS, but the CSS-only does *not* work correctly in IE7, hence this issue. Please read the linked issue above. CSS-only in IE7 leads to ghosting of nested children so that bug must be fixed before I can officially remove the JS support for IE7.

add1sun’s picture

Status: Active » Postponed (maintainer needs more info)

The duplicate JS issue (#235562: jQuery gets reloaded by drupal_add_js) currently is just filtering the JS for IE only using conditional compilation. Once the IE7 CSS issue (#136702: Disappearing links in IE 7.0) is resolved (and I think I have it if people can test it) then we will need to filter the JS on IE6 only. Here are two methods for doing that. I'm not a JS expert so if anyone wants to weigh in on the better method, please do:

if (!window.XMLHttpRequest)
(the XMLHttpRequest was added in IE7 so IE6 doesn't have it)

if ($.browser.msie && parseInt(jQuery.browser.version) == 6)

add1sun’s picture

heh, or we can combine them ;) Here is a really restrictive example:

if ( document.all && !window.opera && !window.XMLHttpRequest && $.browser.msie ) var isIE6 = true;

add1sun’s picture

Status: Postponed (maintainer needs more info) » Needs review
StatusFileSize
new1.04 KB

Attaching a patch that does this. It has to wait for the IE 7 CSS to go in first though.

add1sun’s picture

Status: Needs review » Fixed

Added to all dev versions so we can get testing.

Anonymous’s picture

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for two weeks with no activity.