]> source.dussan.org Git - jquery.git/log
jquery.git
14 years agoFiltering elements only. Fixed #5920
Robert Katic [Sun, 24 Jan 2010 17:19:46 +0000 (01:19 +0800)]
Filtering elements only. Fixed #5920

14 years agoProvided detailed message for JSON parse errors. Fixes #4435.
Mike Alup [Mon, 25 Jan 2010 23:48:52 +0000 (18:48 -0500)]
Provided detailed message for JSON parse errors. Fixes #4435.

14 years agoMake sure that checked state is cloned properly. Based upon the patch by Michael...
Michael Monteleone [Mon, 25 Jan 2010 23:43:33 +0000 (18:43 -0500)]
Make sure that checked state is cloned properly. Based upon the patch by Michael, required better test cases and in doing so found more edge cases. Introduced a new check into jQuery.support as a result. Fixes #5929.

14 years agoMake sure that special.add actually copies over event namespaces and data. Fixes...
jeresig [Mon, 25 Jan 2010 22:01:07 +0000 (17:01 -0500)]
Make sure that special.add actually copies over event namespaces and data. Fixes #5779 and #5834.

14 years agoMake sure multiple bound events have their namespaces and data maintained. Fixes...
jeresig [Mon, 25 Jan 2010 21:45:39 +0000 (16:45 -0500)]
Make sure multiple bound events have their namespaces and data maintained. Fixes #3549.

14 years agoCleaned up divs that should've been removed after a test run.
jeresig [Mon, 25 Jan 2010 20:18:51 +0000 (15:18 -0500)]
Cleaned up divs that should've been removed after a test run.

14 years agoMake sure that it's possible to preventDefault natively-triggered (submit, focus...
jeresig [Mon, 25 Jan 2010 18:45:07 +0000 (13:45 -0500)]
Make sure that it's possible to preventDefault natively-triggered (submit, focus, blur, click) events. Fixes #5695.

14 years agoUpdate the license URL in the header.
jeresig [Mon, 25 Jan 2010 14:31:40 +0000 (09:31 -0500)]
Update the license URL in the header.

14 years agoMake sure original context is maintained and not the deep extended one. Fixes #5924.
John Resig [Mon, 25 Jan 2010 06:08:24 +0000 (01:08 -0500)]
Make sure original context is maintained and not the deep extended one. Fixes #5924.

14 years agoObjects with length properties weren't getting serialized properly by jQuery.param...
John Resig [Mon, 25 Jan 2010 05:46:03 +0000 (00:46 -0500)]
Objects with length properties weren't getting serialized properly by jQuery.param(). Fixes #5862.

14 years agoUse alternative technique for triggering an abort, preventing an exception from being...
John Resig [Mon, 25 Jan 2010 03:13:52 +0000 (22:13 -0500)]
Use alternative technique for triggering an abort, preventing an exception from being thrown in Firefox. Fixes #5923.

14 years agoDon't set the context in .load() as it stops the global ajax events from firing....
John Resig [Mon, 25 Jan 2010 02:58:32 +0000 (21:58 -0500)]
Don't set the context in .load() as it stops the global ajax events from firing. Fixes #5922.

14 years agoMake sure that XHTML-style HTML is purified in .html(). Fixes #5845.
John Resig [Mon, 25 Jan 2010 02:37:05 +0000 (21:37 -0500)]
Make sure that XHTML-style HTML is purified in .html(). Fixes #5845.

14 years agoExpose cleanData, make sure that all bound event handlers are properly cleaned up...
jeresig [Sun, 24 Jan 2010 02:20:19 +0000 (21:20 -0500)]
Expose cleanData, make sure that all bound event handlers are properly cleaned up after html/empty/remove. Fixes #5856 and #5906.

14 years agoAdded in .height(fn) and .width(fn) support. Fixes #5915.
jeresig [Sun, 24 Jan 2010 01:49:59 +0000 (20:49 -0500)]
Added in .height(fn) and .width(fn) support. Fixes #5915.

14 years agoMake empty strings (and other non-string values) simply return null from parseJSON...
jeresig [Sat, 23 Jan 2010 22:08:26 +0000 (17:08 -0500)]
Make empty strings (and other non-string values) simply return null from parseJSON. Also added some parseJSON tests. Fixes #5859.

14 years agoMoved add() tests from core to traversing.
jeresig [Sat, 23 Jan 2010 21:54:24 +0000 (16:54 -0500)]
Moved add() tests from core to traversing.

14 years agoExpose the JSON parsing logic. Fixes #5914.
jeresig [Sat, 23 Jan 2010 21:51:51 +0000 (16:51 -0500)]
Expose the JSON parsing logic. Fixes #5914.

14 years agoCentralize the logic for throwing exceptions. Fixes #5913.
jeresig [Sat, 23 Jan 2010 21:48:47 +0000 (16:48 -0500)]
Centralize the logic for throwing exceptions. Fixes #5913.

14 years agoMake sure that .die() with no args works. Fixes #5789.
jeresig [Sat, 23 Jan 2010 21:37:12 +0000 (16:37 -0500)]
Make sure that .die() with no args works. Fixes #5789.

14 years agoMerge branch 'master' of github.com:jquery/jquery
jeresig [Sat, 23 Jan 2010 17:52:39 +0000 (12:52 -0500)]
Merge branch 'master' of github.com:jquery/jquery

14 years agoSelect (with a selected) fired change on first focus in IE. Fixes #5869.
Matt Curry [Sat, 23 Jan 2010 17:52:32 +0000 (12:52 -0500)]
Select (with a selected) fired change on first focus in IE. Fixes #5869.

14 years agofixed offset(coordinates) returns null when no matching elements in jQuery object...
Karl Swedberg [Thu, 21 Jan 2010 15:18:54 +0000 (23:18 +0800)]
fixed offset(coordinates) returns null when no matching elements in jQuery object (fixes ticket #5888)

14 years agoadded tests for show/hide with falsy, non-zero values
Karl Swedberg [Tue, 19 Jan 2010 23:27:20 +0000 (07:27 +0800)]
added tests for show/hide with falsy, non-zero values

14 years agoMade .show() and .hide() use .animate() only if speed argument is truthy or 0.
Karl Swedberg [Tue, 19 Jan 2010 19:52:35 +0000 (03:52 +0800)]
Made .show() and .hide() use .animate() only if speed argument is truthy or 0.

14 years agofixed jQuery.dir regression introduced with 1.4 *untils patch that errored when trave...
Ben Alman [Thu, 21 Jan 2010 01:10:34 +0000 (09:10 +0800)]
fixed jQuery.dir regression introduced with 1.4 *untils patch that errored when traversing XHTML text nodes with an until test

14 years agoSimplification of uaMatch, based upon the patch by Ben Alman.
Ben Alman [Sat, 23 Jan 2010 17:13:46 +0000 (12:13 -0500)]
Simplification of uaMatch, based upon the patch by Ben Alman.

14 years agoAdded support for multiple live event handlers, live hover, and live focus/blur ...
Irae Brasil [Sat, 23 Jan 2010 16:56:24 +0000 (11:56 -0500)]
Added support for multiple live event handlers, live hover, and live focus/blur (mapped to focusin/focusout). Fixes #5804, #5801, #5852.

14 years agoMake sure that live handlers don't stop inline scripts from executing. Fixes #5835.
Irae Brasil [Sat, 23 Jan 2010 16:14:29 +0000 (11:14 -0500)]
Make sure that live handlers don't stop inline scripts from executing. Fixes #5835.

14 years agoMake sure non-left-click events don't bubble. Fixes #3861.
Irae Brasil [Sat, 23 Jan 2010 16:12:26 +0000 (11:12 -0500)]
Make sure non-left-click events don't bubble. Fixes #3861.

14 years agoUpdating the date in MIT-LICENSE.txt. Thanks @mathias for the heads-up.
jeresig [Thu, 21 Jan 2010 14:07:19 +0000 (09:07 -0500)]
Updating the date in MIT-LICENSE.txt. Thanks @mathias for the heads-up.

14 years agoAdding in the change recommended by Alexander Farkas to fix some bugs in the change...
jeresig [Mon, 18 Jan 2010 22:52:36 +0000 (17:52 -0500)]
Adding in the change recommended by Alexander Farkas to fix some bugs in the change delegation logic. Fixes #5851.

14 years agoFix missing var declaration for the length iterator.
jeresig [Mon, 18 Jan 2010 22:19:44 +0000 (17:19 -0500)]
Fix missing var declaration for the length iterator.

14 years agoMake sure regular settings object is set as context for all Ajax requests, if none...
John Resig [Sat, 16 Jan 2010 15:11:01 +0000 (10:11 -0500)]
Make sure regular settings object is set as context for all Ajax requests, if none is specified. Fixes #5838.

14 years agoRemoved some dead code from buildFragment. Thanks to Sean Catchpole for the suggestion.
John Resig [Fri, 15 Jan 2010 22:46:33 +0000 (17:46 -0500)]
Removed some dead code from buildFragment. Thanks to Sean Catchpole for the suggestion.

14 years agoExpose the proxy object on the object, for the benefit of plugin authors (Thanks...
John Resig [Fri, 15 Jan 2010 20:41:09 +0000 (15:41 -0500)]
Expose the proxy object on the object, for the benefit of plugin authors (Thanks to Justin Meyer for the suggestion).

14 years agoThe inArray declaration was accidentally duplicated.
John Resig [Fri, 15 Jan 2010 15:49:18 +0000 (10:49 -0500)]
The inArray declaration was accidentally duplicated.

14 years agoMerge branch 'master' of git@github.com:jquery/jquery
John Resig [Thu, 14 Jan 2010 06:42:37 +0000 (01:42 -0500)]
Merge branch 'master' of git@github.com:jquery/jquery

14 years agoRemoved extraneous thisObject references. Thanks to Matt Dunlap for the heads-up.
John Resig [Thu, 14 Jan 2010 06:42:08 +0000 (01:42 -0500)]
Removed extraneous thisObject references. Thanks to Matt Dunlap for the heads-up.

14 years agowrapAll(Function) doesn't actually make sense. That's why I couldn't figure out how...
Yehuda Katz [Thu, 14 Jan 2010 05:45:29 +0000 (00:45 -0500)]
wrapAll(Function) doesn't actually make sense. That's why I couldn't figure out how to test it!

14 years agoUpdating the source version to 1.4.1pre.
jeresig [Wed, 13 Jan 2010 20:25:28 +0000 (15:25 -0500)]
Updating the source version to 1.4.1pre.

14 years agoWe only care that some of the html return value is escaped, not necessarily all of...
jeresig [Wed, 13 Jan 2010 20:23:05 +0000 (15:23 -0500)]
We only care that some of the html return value is escaped, not necessarily all of it (as is the case in Safari 3.x).

14 years agoMake sure no exception is thrown if no event handler is found (which is the case...
jeresig [Wed, 13 Jan 2010 16:24:54 +0000 (11:24 -0500)]
Make sure no exception is thrown if no event handler is found (which is the case for applets, objects, and embeds).

14 years agoMake sure that null params aren't traversed. Fixes #5794.
jeresig [Wed, 13 Jan 2010 14:29:01 +0000 (09:29 -0500)]
Make sure that null params aren't traversed. Fixes #5794.

14 years agoSend data if a DELETE Ajax request is done. Fixes #5752.
jeresig [Wed, 13 Jan 2010 05:42:22 +0000 (00:42 -0500)]
Send data if a DELETE Ajax request is done. Fixes #5752.

14 years agoMake sure that disconnected nodes aren't sorted/uniqued. Fixes #5791.
jeresig [Wed, 13 Jan 2010 05:12:18 +0000 (00:12 -0500)]
Make sure that disconnected nodes aren't sorted/uniqued. Fixes #5791.

14 years agoFixed typo in logic, also disabled function setters in this case to allow the functi...
jeresig [Wed, 13 Jan 2010 02:54:06 +0000 (21:54 -0500)]
Fixed typo in  logic, also disabled function setters in this case to allow the functions to passthrough and bind.

14 years agoMake sure that the xhr object still exists after the abort is called.
jeresig [Wed, 13 Jan 2010 02:44:37 +0000 (21:44 -0500)]
Make sure that the xhr object still exists after the abort is called.

14 years agoMake sure that the focusin and focusout easy-bind methods are exposed.
jeresig [Tue, 12 Jan 2010 22:03:34 +0000 (17:03 -0500)]
Make sure that the focusin and focusout easy-bind methods are exposed.

14 years agoMake sure oldAbort is only called if the xhr object still exists.
jeresig [Tue, 12 Jan 2010 21:50:59 +0000 (16:50 -0500)]
Make sure oldAbort is only called if the xhr object still exists.

14 years agoUpdating the source version to 1.4.
jeresig [Tue, 12 Jan 2010 16:06:40 +0000 (11:06 -0500)]
Updating the source version to 1.4.

14 years agoTagging the 1.4rc1 release. 1.4rc1
jeresig [Tue, 12 Jan 2010 16:06:32 +0000 (11:06 -0500)]
Tagging the 1.4rc1 release.

14 years agoSimplified some of the logic for handling the ajax aborts, making sure that ajaxStop...
jeresig [Tue, 12 Jan 2010 15:59:50 +0000 (10:59 -0500)]
Simplified some of the logic for handling the ajax aborts, making sure that ajaxStop isn't called twice.

14 years agoajaxStop was getting called too many times, separated some of the logic into the...
jeresig [Tue, 12 Jan 2010 15:47:00 +0000 (10:47 -0500)]
ajaxStop was getting called too many times, separated some of the logic into the abort method itself.

14 years agoAccidentally removed the init from the Makefile selector build.
jeresig [Tue, 12 Jan 2010 15:33:04 +0000 (10:33 -0500)]
Accidentally removed the init from the Makefile selector build.

14 years agoMake sure that Opera fires events after an aborted Ajax attempt. Fixes #5787.
jeresig [Tue, 12 Jan 2010 15:31:51 +0000 (10:31 -0500)]
Make sure that Opera fires events after an aborted Ajax attempt. Fixes #5787.

14 years agoBringing some selector tests back from Sizzle.
jeresig [Tue, 12 Jan 2010 04:55:02 +0000 (23:55 -0500)]
Bringing some selector tests back from Sizzle.

14 years agoMerge branch 'master' of github.com:jquery/jquery
jeresig [Tue, 12 Jan 2010 04:32:33 +0000 (23:32 -0500)]
Merge branch 'master' of github.com:jquery/jquery

14 years agoSome more touching up of the replaceWith tests.
jeresig [Tue, 12 Jan 2010 04:32:11 +0000 (23:32 -0500)]
Some more touching up of the replaceWith tests.

14 years agobrowser version detection revised for opera >= 10, which was reporting itself as...
Paul Irish [Tue, 12 Jan 2010 03:32:06 +0000 (11:32 +0800)]
browser version detection revised for opera >= 10, which was reporting itself as 9.8 due to their new policy

14 years agoadding extra useragents from trac tickets. correcting opera version
Paul Irish [Tue, 12 Jan 2010 02:30:02 +0000 (10:30 +0800)]
adding extra useragents from trac tickets. correcting opera version

14 years agofixed typo in comments
Neeraj Singh [Wed, 6 Jan 2010 19:23:39 +0000 (03:23 +0800)]
fixed typo in comments

14 years agoDid some reorganizing of the recently added replaceWith tests.
jeresig [Mon, 11 Jan 2010 22:29:48 +0000 (17:29 -0500)]
Did some reorganizing of the recently added replaceWith tests.

14 years agoMake sure we do the malformed JSON check for all both JSON.parse and new Function...
jeresig [Mon, 11 Jan 2010 21:43:21 +0000 (16:43 -0500)]
Make sure we do the malformed JSON check for all both JSON.parse and new Function (this helps to create uniformity between browser implementations of JSON.parse - like where Chrome allows some malformed strings. Thanks to DBJDBJ for the heads-up.

14 years agoMake sure that wrapInner works on elements that have no contents. Fixes #3552.
jeresig [Mon, 11 Jan 2010 21:31:31 +0000 (16:31 -0500)]
Make sure that wrapInner works on elements that have no contents. Fixes #3552.

14 years agoFinal pass at fixing #5785. Need to make sure that inner-nodes are detached before...
jeresig [Mon, 11 Jan 2010 21:25:01 +0000 (16:25 -0500)]
Final pass at fixing #5785. Need to make sure that inner-nodes are detached before the remove() occurs (and it should still occur, the nodes are being obliterated.

14 years agoMade some additional tests for #5785.
jeresig [Mon, 11 Jan 2010 21:08:39 +0000 (16:08 -0500)]
Made some additional tests for #5785.

14 years agoMake sure we use detach instead of remove in replaceWith. Fixes #5785.
jeresig [Mon, 11 Jan 2010 20:57:45 +0000 (15:57 -0500)]
Make sure we use detach instead of remove in replaceWith. Fixes #5785.

14 years agoRevert "Adding in backwards-compatiblity support for jQuery().bind/unbind/trigger...
jeresig [Mon, 11 Jan 2010 18:48:40 +0000 (13:48 -0500)]
Revert "Adding in backwards-compatiblity support for jQuery().bind/unbind/trigger - and immediately deprecating it. Please explicitly use jQuery(document) in your code."

This reverts commit e9d5947b4abbc052046585227892da0adcd56caf.

14 years agoMake sure that submit event is still bound for regular form submit events. Thanks...
jeresig [Mon, 11 Jan 2010 17:26:28 +0000 (12:26 -0500)]
Make sure that submit event is still bound for regular form submit events. Thanks to Mark Gibson for the fix suggestion.

14 years agoMerge branch 'setterargs'
jeresig [Thu, 7 Jan 2010 19:26:06 +0000 (14:26 -0500)]
Merge branch 'setterargs'

14 years agoRe-ordering the args to setOffset() in case people were relying upon the old order...
jeresig [Thu, 7 Jan 2010 19:08:32 +0000 (14:08 -0500)]
Re-ordering the args to setOffset() in case people were relying upon the old order (doubtful).

14 years agoAdded in support for .offset(Function).
jeresig [Thu, 7 Jan 2010 19:07:21 +0000 (14:07 -0500)]
Added in support for .offset(Function).

14 years agoAdd .css(Function) incoming value tests.
jeresig [Thu, 7 Jan 2010 18:52:20 +0000 (13:52 -0500)]
Add .css(Function) incoming value tests.

14 years agoNo need for the try/finally logic in the css tests, won't even work as expected.
jeresig [Thu, 7 Jan 2010 18:44:53 +0000 (13:44 -0500)]
No need for the try/finally logic in the css tests, won't even work as expected.

14 years agoAdded manipulation tests for setter function args.
jeresig [Thu, 7 Jan 2010 18:34:16 +0000 (13:34 -0500)]
Added manipulation tests for setter function args.

14 years agoMake sure that .html(Function) gets the correct previous value.
jeresig [Thu, 7 Jan 2010 18:33:30 +0000 (13:33 -0500)]
Make sure that .html(Function) gets the correct previous value.

14 years agoMake sure the exception has some level of parity with the error from json2.js.
jeresig [Thu, 7 Jan 2010 17:25:50 +0000 (12:25 -0500)]
Make sure the exception has some level of parity with the error from json2.js.

14 years agoMake sure that a parsererror is thrown whenever malformed JSON comes back from a...
jeresig [Thu, 7 Jan 2010 17:21:58 +0000 (12:21 -0500)]
Make sure that a parsererror is thrown whenever malformed JSON comes back from a server (so that the Ajax error handler is called). Makes it uniform across browsers that do and don't have JSON.parse support.

14 years agoBack out the try/catch logic from around JSON.parse. We should always try to use...
jeresig [Thu, 7 Jan 2010 16:54:26 +0000 (11:54 -0500)]
Back out the try/catch logic from around JSON.parse. We should always try to use it, otherwise security will suffer.

14 years agoAdded some .text(Function) tests.
jeresig [Thu, 7 Jan 2010 16:51:48 +0000 (11:51 -0500)]
Added some .text(Function) tests.

14 years agoAdded tests for attribute function setters.
jeresig [Thu, 7 Jan 2010 16:15:40 +0000 (11:15 -0500)]
Added tests for attribute function setters.

14 years agoRemoved .removeAttr(Function), it didn't really make sense.
jeresig [Thu, 7 Jan 2010 16:14:56 +0000 (11:14 -0500)]
Removed .removeAttr(Function), it didn't really make sense.

14 years agoMake sure the state is passed in to the toggleClass attribute function.
jeresig [Thu, 7 Jan 2010 16:04:21 +0000 (11:04 -0500)]
Make sure the state is passed in to the toggleClass attribute function.

14 years agoThere's enough logic going on in jQuery.ajaxSettings.xhr to warrant splitting the...
jeresig [Thu, 7 Jan 2010 15:00:55 +0000 (10:00 -0500)]
There's enough logic going on in jQuery.ajaxSettings.xhr to warrant splitting the function based upon the functionality.

14 years agoMoved the val() tests from manipulation into attributes.
jeresig [Thu, 7 Jan 2010 14:55:15 +0000 (09:55 -0500)]
Moved the val() tests from manipulation into attributes.

14 years agoFixed some bugs relating to the setter arg change in val and html. Also optimized...
jeresig [Thu, 7 Jan 2010 14:53:16 +0000 (09:53 -0500)]
Fixed some bugs relating to the setter arg change in val and html. Also optimized the code in val a bit.

14 years agoFixing some bugs in the re-tooling of toggleClass, adding in some performance optimiz...
jeresig [Wed, 6 Jan 2010 20:23:30 +0000 (15:23 -0500)]
Fixing some bugs in the re-tooling of toggleClass, adding in some performance optimizations.

14 years agoA first pass at making sure that all the setter function arguments receive the index...
jeresig [Wed, 6 Jan 2010 20:08:07 +0000 (15:08 -0500)]
A first pass at making sure that all the setter function arguments receive the index of the element and a relevant value to work with. Fixes #5763.

14 years agoAdd some abort() Ajax tests. Verifies that #3984 works.
jeresig [Wed, 6 Jan 2010 17:13:56 +0000 (12:13 -0500)]
Add some abort() Ajax tests. Verifies that #3984 works.

14 years agoMerge branch 'master' of github.com:jquery/jquery
jeresig [Wed, 6 Jan 2010 16:32:39 +0000 (11:32 -0500)]
Merge branch 'master' of github.com:jquery/jquery

14 years agoAdding in backwards-compatiblity support for jQuery().bind/unbind/trigger - and immed...
jeresig [Wed, 6 Jan 2010 16:32:29 +0000 (11:32 -0500)]
Adding in backwards-compatiblity support for jQuery().bind/unbind/trigger - and immediately deprecating it. Please explicitly use jQuery(document) in your code.

14 years agoMake sure to do a deep copy on arrays. #5750
Filipe Fortes [Mon, 4 Jan 2010 21:25:14 +0000 (05:25 +0800)]
Make sure to do a deep copy on arrays. #5750

14 years agoAdded in support for content-type sniffing for scripts. Fixes #5718.
jeresig [Wed, 6 Jan 2010 15:19:38 +0000 (10:19 -0500)]
Added in support for content-type sniffing for scripts. Fixes #5718.

14 years agoDetect JSON Ajax requests by the response content-type (like is done with XML). Fixes...
Rick Waldron [Wed, 6 Jan 2010 00:48:16 +0000 (19:48 -0500)]
Detect JSON Ajax requests by the response content-type (like is done with XML). Fixes #5709.

14 years agoMerging in jQuery.proxy() branch.
jeresig [Wed, 6 Jan 2010 00:18:39 +0000 (19:18 -0500)]
Merging in jQuery.proxy() branch.

14 years agoAdded in a holdover jQuery.event.guid for back-compat (two plugins use it: mousewheel...
jeresig [Wed, 6 Jan 2010 00:17:28 +0000 (19:17 -0500)]
Added in a holdover jQuery.event.guid for back-compat (two plugins use it: mousewheel and a datepicker). Plugin authors should work to stop using jQuery.event.guid and jQuery.event.proxy ASAP.

14 years agoMerge branch 'useragent'
jeresig [Wed, 6 Jan 2010 00:10:42 +0000 (19:10 -0500)]
Merge branch 'useragent'

14 years agoTry to use the native JSON parser in all cases and fallback to the old technique...
jeresig [Tue, 5 Jan 2010 22:33:41 +0000 (17:33 -0500)]
Try to use the native JSON parser in all cases and fallback to the old technique otherwise. This allows us to also handle cases where the JSON parser is unable to parse JSON-like strings correctly (e.g. {foo:bar}) which is something that worked before but would stop working with the switch to the new parser.

14 years agoRewrite of jQuery.browser to become engine-centric, rather than browser-centric....
jeresig [Tue, 5 Jan 2010 22:01:20 +0000 (17:01 -0500)]
Rewrite of jQuery.browser to become engine-centric, rather than browser-centric. Also attempt to determine the engine version in a smarter fashion, less prone to error. Finally, enhanced the test suite with 255 useragent strings from http://user-agent-string.info/download for testing. jQuery.browser.safari is now deprecated, use jQuery.browser.webkit instead.