Bug Tracker

Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#13404 closed bug (notabug)

Firefox 3.6 not supported in jQuery 2.0?

Reported by: Nao Owned by: Nao
Priority: undecided Milestone: None
Component: unfiled Version: 2.0b1
Keywords: Cc:
Blocked by: Blocking:

Description

It seems that FF 3.6 doesn't work with jQuery 2.0. The console says 'rt.isArray' isn't defined when I tested it on two machines.

Given that it was the last public release before the automatic update system got introduced, it's still got a noticeable usage share in the Firefox ecosystem, and as such the jQuery team should either:

  • ensure it works with it,
  • or add Firefox 3.6 and earlier to the list of 'legacy' releases that are supported in jQuery 1.9 (it does), but not 2.0.

I'd recommend the latter, personally. It's exactly the same problem as with oldIE, but with a much smaller userbase.

Change History (14)

comment:1 Changed 7 years ago by scottgonzalez

Owner: set to Nao
Status: newpending

The browser support page is pretty clear about which browsers are supported. What documentation are you asking for us to update?

comment:2 Changed 7 years ago by dmethvin

We're not even claiming support for FF 3.6 in jQuery 1.9. If you need support for obsolete browsers, just use an older version of jQuery.

comment:3 Changed 7 years ago by Nao

Status: pendingnew

I'm sorry... I thought that jQuery's prime goal was to provide a cross-browser library that saved developers the hassle of having to account for browser bugs...?

I'm aware that you probably never tested v2.0 on FF 3.6 and didn't know it failed loading completely until now, and that's why I created this bug report.

Yes, I can accept that jQuery 2.0+ is for modern browsers only, and as much as I'd like to say that Firefox 3.6 is 'only' 2 years old and a year younger than IE8, as much as I'd like to point out that some companies still bundle VMs with Firefox 3.6 in it to their consultants (Oracle comes to mind...), the reality is that it uses an older JavaScript engine and is bothersome, and these developers can stick to jQ 1.9.

I'm okay with a site looking ugly for users of old browsers (which still are a few percents of my users, IE6/7/Firefox<4/Safari<5 included), but not with JS functionality being disabled. This is why I started using jQuery in the first place: to be able to dispense with testing the JavaScript thoroughly on every single browser.

The release of jQuery 2.0 is good news, because we could simply provide a different version of jQuery depending on the current browser (a cleaner, tighter one for modern browsers, a more convoluted, bigger one for oldIE). So, my code had $version = we::is('ie[-8]') ? '1.9.0' : '2.0.0b1', which should be easy enough to understand. But the jQuery blog does NOT mention that other older browsers were dropped. After confirming that Firefox 4 ran jQuery just fine, I had to change my code to we::is('ie[-8],firefox[-3.6]').

So, yes, at the minimum, I'd appreciate that the jQuery team updates the browser compatibility tables saying precisely whether the software will fail *loading at all* on an older browser. Would also be good to announce such things on the blog.

For your information, I managed to make Firefox 3.6 run jQ 2.0 by changing just four lines. My select box works, and it's a rather complex custom piece of code, but full FF3.6 compat might need more work. Is it worth it? I don't know. I don't think so. I'm just posting the diff patch for those interested.

http://wedge.org/files/ff36.patch

comment:4 Changed 7 years ago by dmethvin

Resolution: notabug
Status: newclosed

But the jQuery blog does NOT mention that other older browsers were dropped.

That's because, except for IE which updates VERY slowly, our policy has been to support the current and previous major version. Older versions may work but we are not actively testing them.

For your information, I managed to make Firefox 3.6 run jQ 2.0 by changing just four lines.

Supporting Firefox 3.6 is more than just taking this patch and applying it. We would need to add that browser to our ongoing unit tests to ensure that we don't break anything, and our future changes would be constrained by its lack of ES5 features like Object.defineProperty. We're not going to do that, it's a very old browser. If you need Firefox 3.6 support, use an older version.

comment:5 Changed 7 years ago by Nao

If you need Firefox 3.6 support, use an older version.

Which version would you suggest? If it's 1.9 then it's all fine (just ensure you point out in the blog that non-IE browsers are not always supported either in 2.0?). It would make sense that if the team ensures 1.9 always works in IE6, it also works in older versions of a much better browser. Don't forget that we can't mix 'proper' jQuery 1.9 code (.on, .done...) with older jQuery code (.bind, older Ajax behaviors...) When I made the jump last week, it took me several days of work and I'm not going to revert it. Wouldn't want to, either. Plus, as you can see, sticking to the latest beta also allows me to report bugs as I find them, and I'm of the adventurous kind.

I'll close my case by repeating that one of jQuery's original goals was to set developers free from old browser quirks. And in that respect, it has brilliantly fulfilled its mission; my software runs perfectly in Firefox 3.6 so far. Going for the 1.9/2.0 route was a decision that followed in its footsteps: keeping support for old versions while having the freedom to write a more consistent codebase, free of hacks, for modern browsers. I accomodated for this by adding a second path for old browsers. Hopefully this is going to be helpful, and useful, in the long run..?

comment:6 Changed 7 years ago by anonymous

I agree with Nao. You are maintaining 1.9 for old versions of IE and 2.x for newer browsers. You should at least add FF 3.6 support to 1.9 (because developers can't provide two code bases for every script, one with support for 2.0 and the other for old versions including FF)!

comment:7 Changed 7 years ago by scottgonzalez

Firefox 3.6 and IE 6 have essentially the same support. They work "as is" in 1.9 and bug fixes will be considered on a case by case basis. Bug fixes for either will not be considered for 2.x.

comment:8 Changed 7 years ago by dmethvin

Which version would you suggest?

Whichever version works for you. We haven't run unit tests in Firefox 3.6 for quite a while so I can't say which versions may work on the code you want to run with it.

You should at least add FF 3.6 support to 1.9

It's got a TINY market share, even compared to IE6: http://marketshare.hitslink.com/browser-market-share.aspx?qprid=2&qpcustomd=0

There are *real costs* to adding yet another browser to our unit test mix, and we're not going to do it for a browser that old.

because developers can't provide two code bases for every script, one with support for 2.0 and the other for old versions including FF

If you are building a *web site* and Firefox 3.6 users are coming to it, pretend that jQuery 2.0 doesn't exist. For now it's intended primarily for non-web situations like Firefox/Chrome plugins, Windows 8 apps, and embedded browsers like PhoneGap.

comment:9 in reply to:  3 Changed 7 years ago by gibson042

Replying to Nao:

For your information, I managed to make Firefox 3.6 run jQ 2.0 by changing just four lines. My select box works, and it's a rather complex custom piece of code, but full FF3.6 compat might need more work. Is it worth it? I don't know. I don't think so. I'm just posting the diff patch for those interested.

http://wedge.org/files/ff36.patch

Good news: most of those changes will be in the official release of jQuery 2.0 because they are required for QtWebKit support. If the library works for you in all other respects, you can shim jQuery.isArray = jQuery.isArray || function( obj ) { return jQuery.type( obj ) === "array"; } and use it to your heart's content.

Note, however, that it's been a long time since we guaranteed support for Firefox 3.6 (that promise was dropped by #11994 for 1.8, even though breaking code didn't land until 1.9)... your use of the library may not utilize those functions that no longer work, but if you do find issues, we're extremely unlikely to address them in an official release. That being said, Firefox 3.6 probably enjoys 95%+ support and you're probably safe to rely upon it as long as everything is well-tested.

comment:10 in reply to:  6 Changed 7 years ago by Nao

Replying to anonymous:

I agree with Nao. You are maintaining 1.9 for old versions of IE and 2.x for newer browsers. You should at least add FF 3.6 support to 1.9 (because developers can't provide two code bases for every script, one with support for 2.0 and the other for old versions including FF)!

The only thing I'm asking for at this point is to make it clear that jQuery 2.0 is really dropping support for any outdated browser, not just IE 6-8. I think it's the sanest thing to do. As for codebases, remember that 1.9 and 2.0 are supposed to be interoperable. You don't have to rewrite your code for one or another. Meaning that if you're using a dynamic language, you can sniff the browser (depending whether or not you're open to such a 'horrible act', personally I'm just fine with it), then echo the Google/jQuery/MS CDN link and change the version number according to the browser being used. If it's MSIE <=8 or Firefox < 4, use 1.9, otherwise you can use 2.0

Replying to dmethvin: I understand the difficulty of testing against every browser. I'm perfectly okay with posting bug reports in case Firefox 3.6 fails to work in jQuery 1.9.x in the future, provided that I happen to be testing my site with it, and that it's not too complicated to fix it on your side.

As for the market share, it's not consistent with what I found on Wikipedia, but not by a magnitude. To me, 0.68% still means I'm going to get Firefox 3.6 every other day, and there's a chance that one of these users is going to complain that 'my site doesn't work' (if they manage to actually post with JS disabled... ;)) Then again, it hasn't happened to me since I switched my site to use dual 1.9/2.0, so I guess there's not much to worry about.

@gibson> Oh, that's a bugger... Hopefully it won't waste too many bytes. I don't think I'll be adding a shim just for Firefox 3.6 though... Even if only echoing it on that browser. Thanks for the hint, though! Maintaining jQuery seems like a nightmare...

comment:11 Changed 7 years ago by dmethvin

The only thing I'm asking for at this point is to make it clear that jQuery 2.0 is really dropping support for any outdated browser, not just IE 6-8.

We cannot possibly make a list of all browsers we *do not* support. We instead make a list of those we do support and attempt to be even more inclusive when it seems justified.

As for the market share, it's not consistent with what I found on Wikipedia

Wikipedia, 2013-01: 0.54 percent of all browsers

Since Mozilla abandoned Firefox 3.6 mid-2012 and it has a miniscule market share it makes no sense for us to continue to work around its issues or to unit test with it.

comment:12 in reply to:  11 Changed 7 years ago by Nao

Replying to dmethvin:

We cannot possibly make a list of all browsers we *do not* support. We instead make a list of those we do support and attempt to be even more inclusive when it seems justified.

Hmm... Then at least, could you reformulate the "Current - 1 version"? Because to me (maybe it's my French?), it means "Current version down to 1st version", i.e. all versions. I only understood it meant "current version & previous version" during this discussion.

comment:13 Changed 7 years ago by ajpiano

Ah, thanks for identifying the disconnect there Nao. As others have pointed out, we technically "dropped support" for FF3.6 around the time 1.8 came out. (When 1.7 came out, FF4 had just come out, IIRC. By the time 1.8 came out, FF 12 was the current version.) So that's why it wasn't mentioned in any blog posts wrt to 1.9.

However, your point about the Current - 1 version is well taken, so I've added a note to the browser support page that should make it clearer what we mean. https://github.com/jquery/jquery.com/commit/30ecd81475659fae02cea6a6159b33b5c12a9496

comment:14 Changed 7 years ago by Nao

Thanks! :)

Note: See TracTickets for help on using tickets.