forked from paulirish/fusejs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
2375 lines (1365 loc) · 135 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
* Ensure new fuse.Object() is instanceof fuse.Object. [jddalton]
* Add `instance` argument to fuse.Fusebox() allowing a custom object to be used as the base which sandboxed natives are attached to. [jddalton]
* Ensure fuse.Object.toQueryString() works correctly when objects contain undefined values in IE. [jddalton]
* Rename fuse.env.test() key `STRING_METHODS_WRONGLY_SETS_REGEXP_LAST_INDEX` to `STRING_METHODS_WRONGLY_SET_REGEXP_LAST_INDEX`. [jddalton]
* Rename fuse.env.Bug/Feature to fuse.env.test and add fuse.env.addTest and fuse.env.removeTest methods. [FuseJS LH #44] [jddalton, Joe Gornick, kangax]
* Lowercase the Fuse namespaces and remove the List aliases. [jddalton]
* Add the overlooked reverse(), sort(), and splice() methods to the Fuseboxed Array.prototype. [jddalton]
* Make Fuseboxed constructor's prototype values of the OBJECT__PROTO__ branch conform to ECMA specifications. [jddalton]
* Add sandboxed Boolean constructor to Fusebox. [jddalton]
* Add a lot of comments to Fuse.Fusebox() and cleanup its codebase. [jddalton]
* Break Fuse.Object.prototype's relationship to other sandboxed natives for consistency across sandbox variations. [jddalton]
* Remove extraneous document.domain setter in the ACTIVE_X_OBJECT branch of createSandbox(). [jddalton]
* Simplify accessing the created iframe in createSandbox(). [jddalton]
* Simplify the RegExp wrapper for broken `\s` in createFusebox(). [jddalton]
* Remove `delete this[expando]` from Ajax.Updater, Ajax.TimedUpdater, Range, Template, and Timer classes to avoid issues when `this` is the global object in IE. [jddalton]
* Move the Element#scrollTo method to the position.js. [jddalton]
* Add `selected` to the list of flag attributes in attribute.js. [Diego Perini, jddalton]
* Make Event.extend() work on events originating from a secondary document. [jddalton]
* Convert unit tests with the `!=` selector to `:not()`. [jddalton]
* Update NWMatcher adapter to work with v1.2.1 [jddalton]
* Make Fuse.Dom.Node() not error with textNodes. [jddalton]
* Remove extraneous check from Fuse.Object.isSameOrigin(). [jddalton]
* Fix regression bugs with Element#contains and Element#getViewportOffset that prevented unit tests from passing. [jddalton]
* Update browser.html, interpreter.html, functional event tests, and remaining unit tests to work with dom wrappers. [jddalton]
* Rename Element#descendantOf to Element#contains and flip the functionality. [jddalton, Joe Gornick]
Note: Backwards compatibility warning.
* Ensure isHostObject() avoids a false positive for null values. [jddalton, kangax]
* Rename Element#childElements to getChildren() and add `get` prefix to element methods ancestors(), classNames(), descendants(), siblings(), nextSiblings(), and previousSiblings(). [jddalton, Joe Gornick]
Note: Backwards compatibility warning.
* Rename Element#read/writeAttribute to get/setAttribute(), add `is` prefix to String/Element#empty and `get` prefix to element methods cumulativeOffset(), cumulativeScrollOffset(), positionedOffset(), and viewportOffset(), [jddalton, Joe Gornick]
Note: Backwards compatibility warning.
* Add support for `context` and `callback` arguments to Fuse.Util.$$() and fix failing selector unit tests. [jddalton]
* Make Fuse.Array#concat and Fuse.Array#slice replacements conform to ECMA 5 specification. [Prototype LH #843] [jddalton, Yaffle]
* Optimize Fuse.Dom.Node() handling of window objects. [jddalton]
* Make Fuse.String#stripTags allow tag names to contain hyphens as stated in spec. [jddalton]
* Reduce the complexity of the html check in Fuse.get() and Fuse.Dom.Element.create() and tweak the feature detection in getNodeName(). [jddalton, kangax]
* Ensure IE Fuse.Dom.Element#getStyle converts negative non-px values to px. [jddalton, jakearchibald, kangax]
* Normalize \t \n \r and multiple spaces to \x20 in element className methods. [jddalton]
* Move method definition of Fuse.Util.$, Fuse.get, and Fuse.getById to dom.js and cleanup element.js. [jddalton]
* Switch from using Array#join for string concatenation to using the plus (+) operator for better minification. [jddalton]
* Support updateGenerics() methods on the DOM wrappers. [jddalton]
* Tweak how String#unescapeHTML tokenizes tags. [jddalton]
* Fix regression bug with Fuse.Dom.Node.getFuseId() getting the proper id. [jddalton]
* Add support for passing a callback to Fuse.query(selector, context, callback). [jddalton]
* Add support for passing an attributes object to Fuse.get(tagName, attributes, context). [jddalton]
* Pass the decorator, instead of the element, to Node.getFuseId() because it is resolved faster. [jddalton]
* Make all DOM methods work with a generic `this`. [jddalton]
* Add Fuse.rawQuery, Fuse.Dom.RawList, Fuse.Dom.Element#rawQuery. [jddalton]
* Add DOM methods to Fuse.Dom.NodeList. [jddalton]
* Remove `this instanceof` usage from FuseJS. [jddalton]
* Rename Fuse.Ajax.getTransport to Fuse.Ajax.create and Fuse.Ajax.Request#transport to Fuse.Ajax.Request#raw. [jddalton]
Note: Backwards compatibility warning.
* Make all namespaces inheritable. [jddalton]
Example: Fuse.plugin.addNS = ...; Fuse.Dom.addNS('Data');
* Rename Fuse.Dom.Element#isFragment to Fuse.Dom.Element#isDetached. [jddalton]
* Add nodeType constants DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, and ELEMENT_NODE. [jddalton, kangax]
* Change all `foo.indexOf(blah) === -1` to `foo.indexOf(blah) < 0`. [Andrea Giammarchi, jddalton]
* Rename Fuse.Dom.Element.decorate to Fuse.Dom.Element.fromElement to be consistent with the rest of the API. [jddalton]
* Add Fuse.Dom.Document class and support for Fuse.get(document). [jddalton]
* Move Fuse.String#scan to template.js so it is with other `gsub` centric methods. [jddalton]
* Futher optimize Fuse.String#times by using recursion. [Dr. J.R. Stockton, jddalton, kangax, Yaffle]
* Allow Fuse.String#extractScripts() to accept a callback argument which reduces one iteration in Fuse.String#evalScripts. [jddalton]
* Cleanup string.js and lazy define Fuse.String#escapeHTML and Fuse.String#unescapeHTML. [jddalton]
* Move all DOM functionality to the src/dom directory. [jddalton]
* Optimize Fuse.String#lastIndexOf by removing the use of the arguments object and make Fuse.Array#indexOf and Fuse.Array#lastIndexOf use toInteger(). [jddalton]
* Optimize Fuse.String#times by using the `Exponentiation by squaring` algorithm. [Yaffle]
* Add support for Fuse.get('<div>') and Fuse.Dom.Element('<div>') to return a new decorated element. [jddalton]
* Make Fuse(element) point to Fuse.get(element) when DOM modules are included. [jddalton]
* Make Fuse.Range#max and Fuse.Range#min only require Fuse.Enumerable equivalents when passing a callback. [jddalton]
* Add private `Enumerable` variable to shorten the Fuse.Enumerable lookup. [jddalton]
* Add private `nil` variable to shorten some null assignments. [jddalton, Kyle Simpson]
* Optimize Fuse.Dom.Element methods `insert`, `update`, and `replace` by only evaling scripts or creating nodes when needed. [jddalton]
* Overhaul how Fuse.Dom.Element methods read and write SCRIPT element text. [jddalton]
* Add Fuse.Dom.Node#getFuseId so it can be inherited by all other element/node classes. [jddalton]
* Optimize Fuse.String#startsWith and Fuse.String#endsWith. [Prototype LH #808] [jddalton, Yaffle]
* Cleanup and optimize Fuse.Fusebox() as well as add Firefox 1.5 - 2.0.0.2 compatibility. [jddalton]
* Expose Fuse.getDocument() and Fuse.getWindow(). [jddalton]
* Make Fuse.Dom.Node() pass to Fuse.Dom.Element.decorate() if the nodeType is equal to 1. [jddalton]
* Ensure Fuse.Dom.NodeList methods return Fuse.Dom.NodeList instead of Fuse.Array instances where necessary. [jddalton]
* Update vendor repos and modify the NWMatcher adapter to use variable references for the NW.Dom.select() and NW.Dom.match() methods. [Diego Perini, jddalton]
* Optimize Fuse.Enumerable.eachSlice() by avoiding a call to map() if no callback is provided. [Prototype LH #796] [Joran Greef]
* Rename Fuse.Class.Methods.addMethods to `extend`. [jddalton]
Note: extend() may be invoked in one of the following ways:
- MyClass.extend(plugins)
- MyClass.extend(statics, plugins)
- MyClass.extend(statics, plugins, mixins)
* Convert Element#inspect to Fuse.Dom.Element#inspect. [jddalton]
* Revert Fuse.Enumerable to a mixin and remove it as a dependency for Fuse.Range. [jddalton]
* After further study change `1 * n` back to to `+n` for quick numeric conversions. [Kean Tan]
* Ensure Fuse.RegExp's \s fix is done in a non-capturing group. [jddalton]
* Fix typo in STRING_REPLACE_COERCE_FUNCTION_TO_STRING bug test key. [jddalton, kangax]
* Stop Opera 9.25 Fuse.Array#slice from clipping results when the end index falls on an undefined index. [jddalton]
* Remove support for Fuse.Function#argumentNames. [jddalton]
Note: Backwards compatibility warning.
* Switch to element decorator patterns instead of extending the native dom elements. [FuseJS LH #29] [jddalton]
Note: Backwards compatibility warning.
- Reorganized event.js
- Remove unused functionality from unittest.js
- Convert some unit tests to use the new element decorators
* Add support for inspecting Fuse's Array, Element, Event, Enumerable, Hash, and String plugin properties. [Prototype LH #787] [jddalton, jedediah]
* Add support for the W3C ElementTraversal interface in traversal.js. [jddalton, Diego Perini]
* Ensure Element#getStyle checks isNull() before other calculations. [jddalton]
* Optimize Element className methods by removing support for edge case whitespace such as newlines and tabs. [jddalton, kangax]
* Changed the Class API for calling a super method in favor of T.J. Crowder's approach. [jddalton, kangax, T.J. Crowder]
Note: A subclassed method may call it's super by:
Subclass.callSuper(this, 'subMethod', arg1, arg2, ...); // OR
Subclass.callSuper(this, arguments, arg1, arg2, ...); // OR
subMethod.$super.call(this, arg2, arg2, ...); // OR
arguments.callee.$super.call(this, arg2, arg2, ...);
* unit test: Correct Element#getStyle width/height test in IE6. [jddalton]
* Store RegExp patterns created while executing Element#removeClassName in a cache. [jddalton, Garrett Smith, kangax, YUI Team]
* Move `borderWidth`, `marginWidth`, `paddingWidth`, and height equivalents from Element#getStyle to Element#getDimensions. [jddalton]
* Optimize Element traversal methods `ancestors`, `next`, `nextSiblings`, `previous`, `previousSiblings`, `siblings`, and `up`. [jddalton, joneff, kangax]
* Add support for the MSXML2.XMLHTTP ActiveXObject because Microsoft.XMLHTTP is deprecated. [MooTools LH #739] [jddalton, lukasbuenger, Scott Kyle]
* Change Fuse.Version, Fuse.ScriptFragment and Fuse.JSONFilter to camelCase to be consistent with the rest of the codebase. [jddalton]
* Absorb pseudo private style helper methods into Element#getStyle and cleanup style.js and position.js. [jddalton]
* Add extraneous semicolons to make JSLint happy. [Diego Perini]
* Fix Fuse.Object.isSameOrigin() unit test when running from rake. [Diego Perini, jddalton]
* Implemented Element.getDimensions() options argument. [FuseJS LH #6] [Joe Gornick, jddalton]
* Stop Element#isVisible unit test from failing because IE6 doesn't respect 0px dimensions. [jddalton]
* Fix bugs/typos/unit tests in the Fuse.Ajax classes. [Diego Perini, jddalton]
* Ensure line breaks in the Fuse.Console output display correctly for IE6. [jddalton]
* Cleanup and simplify the Fuse.Console class. [jddalton]
* Minor code cleanup and add missing semicolon to Fuse.Ajax.Responder.register(). [Diego Perini, jddalton]
* Ensure the catch-all of Fuse.Object.hasKey() won't error if the object doesn't have a constructor property. [Garrett Smith, jddalton]
* Rename all occurrences of `.Plugin` to `.plugin`. [jddalton, kangax]
* Rename Fuse.Exception to Fuse.Console and add support Opera and Jaxer consoles. [FuseJS LH #52] [jddalton, Mark Caudill, kangax]
* Remove `strict` flag from the `contains` methods and allow native/sandboxed object instances to match primitive values. [jddalton]
* Remove lingering Fuse.Array#clone dependency from the Fuse.Array#grep addition. [jddalton]
* Fix leaked variable `name` that caused TaskSpeed to error in WebKit based browsers. [Diego Perini]
* Refactor codebase to reduce file dependencies and allow more custom build variations. [jddalton]
* Cleanup codebase and optimize Element class. [jddalton, kangax]
- Optimized Fuse.Util.$
- Optimized insertableNodeTypes
- Optimized Element.addMethods()
- Fixed global var leaks in fusebox.js
- Stoped wrapping `toString` and `valueOf` on sandboxed natives
- Removed SafariMobile browser sniff from Feature('ELEMENT_SPECIFIC_EXTENSIONS')
- Renamed Element._getContentFromAnonymousElement() to Element._getFragmentFromString()
- Made Element.extend.refresh() private
* Rename Fuse.Browser to Fuse.Env to include other environments like Jaxer and Adobe AIR. [FuseJS LH #44] [jddalton, kangax]
* Reduce object property lookups by creating private variables and perform some code cleanup. [jddalton]
* Fix bug in Fuse.Object.isSameOrigin() that allowed urls ending with the same domain name to pass. [jddalton]
* Ensure Fuse.Object.toQueryString() only enumerates over an object's own direct properties. [Prototype LH #126] [jddalton, kitsg, Peter Gyongyosi]
* unit test: Add option to dynamically set the Fuse.debug flag in the test template. [jddalton]
* Fuse.debug flag set based on query string parameters in script tag [jddalton, Thomas Fuchs, Mark Caudill]
* Namespace Fuse.Exception added to use Firebug or to throw an exception via the Fuse.debug flag. [FuseJS LH #52] [jddalton, Mark Caudill]
* Rethrow errors when `onException` callbacks are not provided for Fuse.Ajax.Request instances. [Prototype LH #634] [jddalton, Spezi]
* unit test: Fix bug in Test.Unit.Testcase#benchmark failing to use Fuse.Number#times. [jddalton]
* Add `timeout` option and `onTimeout` event callbacks to Fuse.Ajax.Request. [FuseJS LH #37] [Prototype LH #220] [jddalton, Laurent Fortin, Mark Caudill]
* Optimize the Element constructor giving it a massive performance boost in all browsers. [FuseJS LH #50] [Diego Perini, jddalton]
* Tweaked a line in the Rakefile to automatically run `rake dist` before running `rake build_unit_tests`. [kitsg]
* unit test: Change Fuse.Ajax.Request `onComplete` callback to `onDone` in the html template and update Fuse.Dom.Selector tests to reflect the changed doctype. [jddalton]
* unit test: Add Fuse version number to the html templates. [jddalton, Tobie Langel]
* Fix Fuse.Ajax.TimedUpdater#maxDecay and add relevant unit tests. [Prototype LH #419] [Casey Watson, jddalton]
* Catch Firefox error when accessing Fuse.Ajax.Request#status caused by status 408 Request Timeout. [jddalton, Monsur Hossain]
* Count Fuse.Ajax.Request#status 304 as a successful request. [Prototype LH #331] [jddalton, Kenneth Kin Lum]
* Translate IE's incorrect Fuse.Ajax.Request#status 1223 to 204. [FuseJS LH #40] [jQuery Trac #1450 ] [Prototype LH #49, #129] [amartone, jddalton, Ken Snyder, Mark Caudill, Monsur Hossain]
* Only count a Fuse.Ajax.Request#status of 0 as successful for non-http requests. [Prototype LH #49] [jddalton, Mark, Caudill, Radek Pech]
* Allow Fuse.Ajax.Responders.dispatch() to continue dispatching events even though one or more responder has thrown an error. [Dean Edwards, jddalton, John Resig]
* Merge Fuse.Ajax.Response into Fuse.Ajax.Request. [FuseJS LH #41, #43, #49] [jddalton, Mark Caudill]
Note: Backwards compatibility warning.
- Reduce memory use and optimize performance
- Ensure all xhr readyStates are fired
- Ensure headers are available in state 2
- Set response text/JSON/XML to null/empty string when xhr is aborted
- Fuse.Ajax.Base constructor accepts `url` as the first argument and `options` as the second
- Fuse.Ajax.Base normalizes all options
- Users may set the default headers at Fuse.Ajax.Base.options.headers
- Renamed Fuse.Ajax.Request methods `success` to `isSuccess`
- Removed Fuse.Ajax.Request methods `setRequestHeaders`, `evalResponse`, and `getStatus`
- Removed all browser sniffs from Fuse.Ajax
- Removed an old bug fix for Firefox versions lower than 1.5 (it caused bugs with xhr HTTP authentication)
* Add support for passing username and password to allow Ajax HTTP authentication. [FuseJS LH #48] [jQuery Trac #2570, #2865] [Prototype LH #585] [jddalton, kai, Mark Caudill, mikeg]
* Change Fuse.Ajax.Request.Event names to those defined by the W3C XMLHttpRequest draft. [jddalton]
Note: Backwards compatibility warning.
* Ensure onSuccess/onFailure responders are fired regardless of provided request options.onXXX status callbacks. [Prototype LH #263, #334] [Darrin Holst, jddalton]
* Skip global/request onSuccess/onFailure events if the request is aborted. [Diego Perini, fearphage, jddalton]
* Add missing semicolons, reduce multiple variable declarations, and remove wrongly placed commas. [Diego Perini]
* Add Fuse.Ajax.Request#abort method and ensure all XHR readyState events are fired once. [Prototype LH #124, #398, #447, #560] [FuseJS LH #36, #38] [Diego Perini, fearphage, jddalton, Mark Caudill]
* Change to HTML 4.01 Transitional doctype and escape closing tags in the source in the off chance that it is embeded in a page instead of an external js file. [jddalton]
* Make Fuse.String#truncate work with zero and null lengths. [jddalton]
* Optimize Fuse.String#camelize and cleanup Fuse.String#capitalize. [fearphage, jddalton]
* Fix incorrect usage of Fuse.String#unfilterJSON in Fuse.Ajax.Request#evalResponse and optimize Fuse.String#unfilterJSON and Fuse.String#isJSON. [jddalton, Samuel Lebeau]
* Fix IE6 try-catch-finally bug in Fuse.Timer class and unit tests. [Prototype LH #696] [jddalton, xucia, Yaffle]
* Changed the argument order in Form.TimedObserver and Field.TimedObserver to `element, callback, interval, options` for a more consistent API. [jddalton]
Note: Backwards compatibility warning.
* Make Fuse.Timer() operate on milliseconds instead of seconds and allow setting the millisecond `multiplier` via an options object as the third argument. [FuseJS LH #26] [kitsg, jddalton, Joe Gornick]
Note: Backwards compatibility warning.
* unit test: Fix minor Safari 2.x bugs in functional event tests. [jddalton]
* Rename Fuse.Ajax.Base and Fuse.Ajax.TimedUpdater `defaultOptions` object to `options` and fix options related bugs in Fuse.Ajax.TimedUpdater. [jddalton, Joe Gornick, kitsg]
Note: Backwards compatibility warning.
* Add Ext.DomQuery support and allow the active css engine to be dynamically set in the unit tests. [jddalton]
* Ensure that Fuse.Object() converts native objects as well as primitives to Fuseboxed natives. [jddalton]
* Ensure `max` and `min` methods of Fuse.List and Fuse.Enumerable don't return augmented values when using callbacks. [jddalton]
* Optimize Fuse.Range `max`, `min`, 'size', and `toArray` methods. [Prototype LH #117] [jddalton, Michael M Slusarz]
* Stop escaping quotes in Fuse.String#escapeHTML and stop stripping tags in Fuse.String#unescapeHTML. [Prototype LH #722, #729] [jddalton, mck, SWilk, T.J. Crowder, Tobie Langel]
* Fix IE bug where Fuse.String#match(pattern) incorrectly sets the pattern's `lastIndex` property. [jddalton]
* Optimize Fuse.String#lastIndexOf and fix a Chrome bug where negative positions aren't set to 0. [jddalton]
* Optimize property lookup speeds by storing references to longer namespaced objects and simplifying method aliases. [jddalton]
* Make Fusebox fallback on Fuse._docEl instead of document HEAD when inserting an iframe. [fearphage, jddalton]
* Ensure IE8 EMBED elements are extended manually and APPLET/EMBED/OBJECT elements are extended by Element.Simulated methods. [Prototype LH #681] [jddalton, kangax, Nick Stakenburg]
* Avoid an alert in IE8 when testing for ELEMENT_OBJECT_AND_RELATIVES_FAILS_TO_INHERIT_FROM_PROTOTYPE and Java is not installed. [Prototype LH #668] [Andrew Dupont, jddalton, kangax, orv]
* Wrap variable assignments in return statements with parentheses to ensure Chrome 1 support. [jddalton]
* Ensure Fuse.Function, when used as a constructor, makes the default value of `this` equal to the document global and change the `thisArg` assigned by wrappers in Fuse.Fusebox and Fuse.Function. [jddalton]
* Optimize Fuse.String#camelize by using while-loops instead of String#replace. [jddalton, kangax]
* Optimize Element.hasAttribute() by forking if Element#hasAttribute exists. [jddalton, kangax]
* Memoize heavily used Fuse.String methods `capitalize` and `camelize`. [jddalton, kangax]
* Make the Fuse.Class wrapper used for this._super only perform __method.call(this) when no arguments are passed. [jddalton]
* Remove the dollar sign method from the global namespace. [jddalton]
* Ensure Event cache is cleared when there are no event handlers and fix a typo in _winLoadWrapper(). [jddalton]
* Make the dom-loaded solution rely on cross-browser rules[n].selectorText instead of rules[n].cssText. [jddalton]
* Avoid an edge-case massive delay in the dom-loaded solution by using global.frameElement instead of global.top. [jQuery Trac #4787] [jddalton, Rich Dougherty]
* Make Fuse.Number methods follow spec and work with a generic `this` as well as optimize the math methods. [jddalton]
* Rename Fuse.String#dasherize to `hyphenate`, variables used in String methods from `hash` to `object`, and Fuse.Class private `_emptyFunction` to `_subclass`. [jddalton, kangax, Valerio Proietti]
Note: Backwards compatibility warning.
* Optimize Hash objects by adding a Fuse.Hash#_data property and correct the Fuse.Hash#_object property. [jddalton]
* Use 1 * foo to more quickly coerce data to numbers instead of +foo. [kangax]
* Change Array method internals from Fuse.Object -> Object usage and throw a TypeError if `this` is null/undefined. [jddalton]
* Ensure the `object` argument of Fuse.Object.hasKey() is coerced to an object in all forks of the method. [jddalton]
* Ensure LINK elements collected in the dom-loaded solution have a `rel` attribute of `stylesheet` (case-insensitive). [jddalton, Simo Kinnunen]
* Allow Element#insert, Element#setStyle, Element#writeAttribute, Fuse.Ajax.Request#setRequestHeaders, and Fuse.Ajax.Responders#register to accept a Fuse.Hash object. [Prototype LH #718] [jddalton, Matthew Guscott]
* Pass global instead of null to Function#call and Function#apply. [jddalton]
* Remove respondToReadyState() from the dom-loaded solution, tweak the `doScroll` approach, and ensure `readyState` and `doScroll` approaches continue until one succeeds. [Hedger Wang, jddalton, Thomas Aylott]
* Make Fuse.Array.Plugin methods use bitwise shift operators >>> and >> instead of parseInt(). [Ben Laurie, jddalton]
* Ensure String primatives are passed to eval(). [jddalton]
* Optmized Fuse.Number#toPaddedString by avoiding costly method calls. [jddalton]
* Ensure String#lastIndexOf returns Fuse.Number() values and make string methods conform to spec by cohercing `this` to a string and throwing if `this` is null/undefined. [jddalton]
* Optimize Fuse.String#trim. [jQuery Trac #2279] [Ariel Flesler, DarkRyder, jddalton, phpmyforum, Steven Levithan]
* Make Fuseboxed RegExp constructor automatically fix buggy "\s" character matches in regexp patterns. [jddalton]
* Fix Chrome issue with iframe sandboxes by using the __proto__ mode by default. [jddalton]
* Fixed Konqueror Element#replace bug in _createContextualFragment() that threw errors when passed incompatible markup. [jddalton, kangax]
* Allow objects to execute their own `clone` method when passed to Fuse.Object.clone(). [jddalton]
* Make the Fuse.List methods intentionally generic so they don't require that their `this` value be an Array object. [jddalton]
* unit test: Correct a return statement in the DOM unit test `setup` method. [Ihab Awad, Tobie Langel]
* Optimize Element#isFragment to use Element#compareDocumentPosition if available. [Diego Perini, jddalton]
* unit test: Add tests for table elements to the Element#isVisible unit tests. [jddalton]
* Optimize Element._getContentFromAnonymousElement() by replacing a Fuse.Number#times call with a while-loop. [jddalton, kangax]
* Optimize NWMatcher by passing a Fuse.List to its select() method and update other engines. [Diego Perini, jddalton]
* Ensure pollers used in the dom-loaded solution stop polling when not needed and stop the IE doScroll poller when doScroll() is successful or document readyState is `complete`. [Diego Perini, jddalton]
* Make Element#isVisible() return true when an element has height or width and is not display="none". [jQuery Trac #4512] [Brandon Aaron, jddalton, qiuzj, vbabiy86]
* Allow Fuse.Function methods to pass an array, ['methodName', context], as the `fn` argument to help methods work with lazy loaded methods. [jddalton]
* Ensure Fuse.Object.inspect() avoids treating DOM nodes as generic Object objects. [jddalton]
* unit test: Fix Ajax reference in the emulated DOMParser object. [jddalton]
* Make Fuse.RegExp() calls as a function instead of with a new expression. [jddalton]
* Escape a forward slash in the regexp pattern of Fuse.Object.isSameOrigin(). [Diego Perini, jddalton]
* Optimize Fuse.String#replace and ensure it follows specification with regard to setting the pattern.lastIndex. [jddalton, Samuel Lebeau]
* Remove unneeded IE8 RC1 fork in Fuse.List.fromNodeList(). [Diego Perini]
* Optimize Fuse.Template by converting the pattern once during instanciation. [jddalton, Samuel Lebeau]
* Make Fuse.String#stripTags more closely follow the W3C specification. [Prototype LH #674] [igor, jddalton, kangax]
* Add Fuse.String#lastIndexOf if missing from the sandboxed String. [jddalton]
* Allow Fusebox to remove the iframes used to create the native sandboxes in Opera 9.5-10a. [jddalton]
* Add support for Peppy and Dojo Acme JavaScript CSS Selector engines and update other engines. [jddalton]
* Correct many coding issues related to the unit test rewrites. [jddalton]
Note: Backwards compatibility warning.
- Reduce repeated code by creating/removing aliases:
* Ajax.Response#getAllHeaders -> Ajax.Response#getAllResponseHeaders
* Ajax.Response#getResponseHeader -> Ajax.Response#getHeader
* Fuse.Util.$$() -> Fuse.query()
* Remove Fuse.RegExp#match alias of Fuse.RegExp#test
- New Fixes/Optimizations
* Make Fuse.Class, Fuse.Range and others perform as if by a new expression when they, the constructors, are called as a function.
* Ensure, for IE, that Element#writeAttribute coerces values to strings before setting them. [kangax]
* Make more methods return extended natives
* Address Element#clonePosition issue with hidden elements in Safari 2.x (needs refining)
* Optimize Element#getOpacity by avoiding calls to Element#getStyle
* Add Fusebox Array.create() and Array.fromArray() methods
* Ensure NWMatcher, Sizzle, Slick, and Sly engines will run against selector unit tests
* Make Fusebox String() returns an empty string when called with no argument given
* Ensure Fusebox Array#filter, Array#every, Array#map, and Array#some are only wrapped once
* Correct behavior of Fusebox Object when called as a function
* Reduce code needed for "__proto__" support in Fuse.Fusebox._createNatives()
* Make Fuse.Fusebox(mode) accept a mode argument to allow devs to choose the method in which a sandbox is created
* Create the Field.EventObserver, Form.EventObserver, Field.TimedObserver, and Form.TimedObserver constructors using named functions for better debugging
* Make Fuse.Fusebox#updateGenerics use Fuse.Object._each() when available
* Ensure IF statements and others checking for empty strings will work with those created by Fuse.String()
* Make getStyle() dom-load helper fallback on element.style when needed
* Make Fuse.Object.inspect() work with Fusebox Object objects
* Add Fuse.Hash#toArray() to take advantage of the Hash rewrite
* Make Array.Plugin methods inspect, map, without, and zip work with a generic `this` value
* Make Enumerable#zip, Hash#zip work with a generic `this` value
- Regression Bug Fixes:
* Change getWindow(), getNodeName(), Fusebox Date.now() and JSON methods coding pattern to work in Safari 2
* Ensure Fuse.List.from() works correctly for non array objects
* Fix Fuse.Function.defer() and Fuse.Function.curry()
* Make Fuse.Class() work in Safari 2.x
* Make Fuse.RegExp.specialChar.s work in Safari 2.x
* unit test: Rewrite all unit tests to support the Fuse namespace changes. [jddalton]
* Fix Fuse.Date instanceof detection and make Fuse.Object conform to ECMA specification when passing a null or undefined value. [jddalton]
* Remove strict equality operators when checking indexOf() results because they fail on Fuse.Number instances and correct more overlooked native to Fuse.<native> conversions. [jddalton]
* Optimize Fuse.Function statics and add a method name cache to Fuse.Fusebox#updateGenerics. [jddalton]
* Refactor Fuse.Fusebox() and add the ACTIVE_X_OBJECT feature test. [jddalton]
* Fix a regression bug in Fuse.Class that stopped access to a class's `_super` method. [jddalton]
* Ensure Fuse.Dom.Selector.select() adapters return extended elements in IE. [jddalton]
* Ensure Array#_each returns the array it iterates over and correct overlooked native to Fuse.<native> conversions in the source. [jddalton]
* Append iframes, used when creating a Fusebox, to the HEAD instead of the HTML element. [jddalton]
* Remove nodeListSlice() and add `results` argument to prependList() allowing it to set the results initial value. [jddalton]
* Add Fuse.List.fromNodeList() and Fuse.List.fromArray() as a more granular option to Fuse.List.from(). [jddalton]
* Hook up Fuse.Dom.Selector API and cleanup/optimize more of the element traversal methods. [Prototype LH #349] [dave mankoff, jddalton]
Note: Backwards compatibility warning.
- Add Fuse.query() method
- Remove methods: adjacent
- Allow ancestors, childElements, descendants, nextSiblings, previousSiblings, and siblings methods to filter by selector
* Drop Prototype selector engine and add support for NWMatcher, Sizzle, Slick, and Sly selector engines. [jddalton]
Note: Backwards compatibility warning.
* Ensure Fuse.Util.$A converts primatives into objects when used with the `in` operator. [Justin Perkins, kangax]
* Cleanup and optimize element traversal methods. [jddalton]
Note: Backwards compatibility warning.
- Removed methods: immediateDescendants, getElementsBySelector, recursivelyCollect
- Renamed method: select -> query
- Optimized Element#sibilings() method by reducing the number of function calls it makes
* Correct nodeListSlice() handling of an undefined endIndex. [jddalton]
* Move Enumerable methods to it's prototype. [jddalton]
* Make Fuse natives inherit from Fuse object. [jddalton]
* Cleanup Fuse.Fusebox() and add support for Native generics. [jddalton]
* Move all JSON methods to json.js. [jddalton]
* Cleanup object.js and array.js and add `toList` alias for `toArray` methods. [jddalton]
* Namespace natives Fuse.Date, Fuse.Function, Fuse.List, Fuse.Number, Fuse.RegExp and Fuse.String. [jddalton]
Note: Backwards compatibility warning.
- Moved abstract.js, deprecated.js, try.js to the Prototype emulator folder
- Moved Fuse.Browser object definition to broswer.js
- Renamed Ajax.PeriodicalUpdater to Ajax.TimedUpdate
- Cleaned-up private utility methods
- Ensure consistent use of named functions
- Implemented inheritable namespaces
- Change Fuse.Class()
* Removed Class.create() in favor of Fuse.Class(superclass/methods [, methods, ...])
* Allow passing a `constructor` method to Fuse.Class to use as the klass()
* Make the initialize() method optional and don't create it by default
- Added methods:
Fuse.addNS(path, superclass/methods [, methods, ...]): Add namespaces to the Fuse object
Fuse.Fusebox(): Return an object containing sandboxed natives
* unit test: Add Form unit tests to ensure Fuse works with Safari's input type="search". [jddalton, malsup]
Originally reported on http://dev.jquery.com/ticket/4107.
* Make Ajax.Request() use the window.location.href value if a falsey url is given. [Prototype LH #597] [jddalton, Spezi]
* Ensure IE String#replace converts null/undefined return values to string `null`/`undefined` and add more unit tests for String#replace, String#gsub, and String#sub. [jddalton, Michael Hollauf, Samuel Lebeau]
* Add Hash#toArray and properties _prairs, _keys, and _values to optimize methods iterating over the internal hash object. [jddalton]
* Add support for Mozilla's Object#__count__ property in Object.isEmpty(). [Andreas Ecker, jddalton, Nicholas Zakas]
* Optimize Number#times by forking for `thisArg` and cleanup Try.these() and ObjectRange#_each. [jddalton]
* Optimize Array#contains and Enumerable.contains() by forking for strict or loose matches. [jddalton]
* Give Object.inspect() the ability to process Object objects. [Prototype LH #638] [Evil.2000, jddalton]
* Hash API updates and optimizations. [FuseJS LH #17] [jddalton, Joe Gornick]
Note: Backwards compatibility warning.
- Renamed methods: include -> contains
- Removed methods: reject, update
- Removed aliases: findAll, index, select, toTemplateReplacements
- Updated methods:
Hash#contains: Added a strict parameter for strict comparisons.
Hash#set: Updated to accept either key/value arguments or an object/Hash.
Hash#unset: Updated to accept either an array of keys or arguments of keys.
- Added methods:
Hash#clear
Hash#first: Added proper `first` support to Hash.
* first(n): Returns an array containing the first n of the list.
* first(callback, [thisArg]): Returns the first item when the callback returns true.
Hash#last: Added proper `last` support to Hash. Same as Hash#first, but starts from end.
Hash#map: Added proper `map` support to Hash.
* Ensure Fuse determines the correct element to get page scroll data from. [jddalton]
* Fix Chrome's broken String#replace that returns the wrong results for global empty pattern matches with functions as replacements. [jddalton]
* Optimize String#toQueryParams by avoiding String#match and Array#shift. [jddalton]
* Optimize Enumerable.first() when passing no arguments. [jddalton]
* Fix Array#inject recursion error in Firefox. [jddalton]
* Cleanup Feature/Bug tests and correct Element#clonePosition unit test for IE 6. [jddalton]
* Rename Element#visible to Element#isVisible. [jddalton]
Note: Backwards compatibility warning.
* Make Element#visible work with elements that are nested in hidden parent elements or have an offsetWidth/offsetHeight of zero. [jddalton, matheusalmeida]
Originally reported on http://dev.jquery.com/ticket/3895.
* Make $() fallback on the `expando` varaible for malformed strings to avoid passing an empty string to document.getElementById(). [jddalton]
* Rename String#strip to String#trim and add JavaScript 1.8.1 String#trimLeft and String#trimRight support. [jddalton]
Note: Backwards compatibility warning.
* Rename Element#absolutize to Element#makeAbsolute and Element#relativize to Element#undoAbsolute. [jddalton]
Note: Backwards compatibility warning.
* Ensure Element#cumulativeOffset works with hidden elements or elements with borders and Element#clonePosition resizes elements, with various paddings, correctly. [Prototype LH #603] [jddalton, Manuel Carrasco]
* Make Element#clonePosition work correctly when `source` is an ancestor of `element`. [jddalton]
- Add Element._getBorderWidth(), Element._getBorderHeight(), Element._getPaddingWidth(), and Element._getPaddingHeight()
- Element#cummulativeOffset allow a second `ancestor` argument to be used to stop iterating when it encounters the ancestor
- Make Fuse.Browser.Bug() and Fuse.Browser.Feature() expose their internal cache object as `_object`
* Ensure Element#getOffsetParent returns the proper offsetParent for hidden elements. [Prototype LH #618] [jddalton, rvagg]
* Allow Element#getOffsetParent to return null and remove Element._getRealOffsetParent() helper. [jddalton]
Note: Backwards compatibility warning.
* Move Element#getStyle and Element#setStyle to the same closure so they can share constants as well as cleanup Element#setOpacity and Element#getStyle. [jddalton]
* Remove unneeded `decodeURIComponent(escape(json))` from Ajax.Response#_getHeaderJSON and rely on proper encoding instead. [Prototype LH #620] [FuseJS LH #27] [jddalton, Mark Caudill, Paul Alexandrow]
* Ensure strict arguments.length comparisons, cleanup Array#inject, and remove arguments.length based forking in Array#first and Array#last. [jddalton]
* Updated Array, Enumerable, and String APIs. [FuseJS LH #16] [jddalton, Joe Gornick]
Note: Backwards compatibility warning.
- Renamed methods: include -> contains
- Removed methods: detect, reject
- Removed aliases: all, any, collect, entries, find, findAll, member, select
- Updated methods:
Enumerable.contains: Added a strict parameter for strict comparisons.
- Added methods:
Enumerable.first: Replaces the need for `detect` and accepts optional parameters.
* first(n): Returns an array containing the first n of the list.
* first(callback, [thisArg]): Returns the first item when the callback returns true.
Enumerable.last: Same as Enumerable.first, but starts from the end.
* Fix Safari 3.0.4 bug in Element#update when updating COLGROUP and OPTGROUP elements as well as cleanup the Safari 2 insertion wrapper for script elements. [jddalton]
* Ensure exceptions thrown in the Timer's callback are not swallowed by the try-catch in onTimerEvent(). [jddalton]
* Add Object.isEmpty() utility method to help detect when an object contains no properties of its own. [Prototype LH #245] [jddalton, Ken Snyder]
* Cleanup String#escapeHTML and String#unescapeHTML as well as standardize capability check property values to reduce extraneous text. [jddalton]
* Fix IE bug where String#replace sets regexp's lastIndex property. [jddalton]
* Optimize Hash using the `expando` property to avoid costly Object.hasKey() lookups. [jddalton, kangax]
* Add unique private `expando` property. [jddalton]
* Fix regression bug in the Object._each() Safari 2 fork. [jddalton]
* Ensure Object.isHash() returns false for Hash.prototype. [jddalton]
* unit test: Update unit test framework. [jddalton, Tobie Langel]
* deprecation extension: Mark Array#reduce() as removed (commented out because native Array#reduce is used in Array#inject). [jddalton, Tobie Langel]
* deprecation extension: Modify so it will run in Fuse. [jddalton]
* deprecation extension: Cleanup Hash update helpers. [Tobie Langel]
* deprecation extension: Cleanup `assertInfoNotified`, `assertErrorNotified`, `assertWarnNotified`, and `assertNotNotified` tests, as well as add `assertEmpty` test. [Tobie Langel]
* Add support for script elements in Element#update, Element#insert, and Element#replace. [Prototype LH #573] [jddalton, kangax, Martin, Tobie Langel]
* Work around IE8 bug causing APPLET and OBJECT elements not to inherit from their prototypes. [jddalton]
* Fix Safari 2 bugs in getWindow() and Event.extend() as well as comment Element.extend(). [jddalton]
* Fix coding pattern so function expressions will work in Safari 2. [jddalton]
* Remove undeclared assignments for ECMA 3.1 strict mode compliance. [jddalton, kangax]
* Change coding pattern to utilize named function expressions and reduce FuseJS's memory footprint. [jddalton, kangax]
* Make Element#viewportOffset work with elements in iframes, ensure `rootNodeName` is a declared locally in Element#cumulativeScrollOffset, and cleanup document.viewport.getScrollOffsets(). [jddalton]
* Fix bug in Element#getOffsetParent caused when returning a null element and ensure AREA elements return their parent MAP element. [Diego Perini, jddalton]
* Rename the `global` variable in String#replace to `isGlobal` as to not be confused with the environment's `global` object. [jddalton]
* Optimize private method concatList() by no longer cloning the list being concatenated. [jddalton, Robert Kieffer]
* Optimize Element#hasClassName. [Diego Perini]
* Remove extraneous Safari 2 fork of the $A() utility method. [Prototype LH #595] [jddalton, kangax]
* Fix incorrect method references in the DOM Level 0 event system. [jddalton]
* Add private methods getWindow() and getRoot() to ensure the Event system works across frames. [jddalton]
* Fix how Event#pointer methods lazily define themselves as well as a bug in IE Event#pointer methods . [jddalton]
* Fixed Opera 9.2x bug in nodeListSlice() when converting node lists containing an element with an id="length". [Diego Perini, jddalton]
* Add Opera support to the ELEMENT_SPECIFIC_EXTENSIONS feature detection. [jddalton]
* Add missing semicolon to String#toQueryParams and make Selector methods more Caja friendly. [jddalton]
* Large cleanup of code in preparation for the namespace rewrite. [jddalton]
- Add private method getNodeName() [David Mark, kangax]
- Rename private method getOwnerDoc() to getDocument()
- Move private variables body, doc, docEl, dummy, and root to the Fuse object as Fuse._body, Fuse._doc, Fuse._docEl, Fuse._div, Fuse._root
- Remove window onunload event handlers to enable bfcache
- Fix IE memory leak in the Event object
- Indicate methods are private by prefixing their name with an underscore
- Optimize the RegExp.specialChar.s fix
- Cleanup Try object
- Ensure elements are cached propertly, in IE, when created with a name/type attribute
* unit test: Fix DOM test `testElementUpdateWithToElementMethod` check for html comments in Safari 2 and change the wording on some Event test error messages. [jddalton]
* Add Object._extend() as a stripped down version of Object.extend() without any `DontEnum` fixes. [jddalton]
* Ensure Template#evaluate does not evaluate inherited properties of the `object`. [jddalton, kangax]
* Avoid unneeded extending/iterating in Element#down, Element#next, Element#previous and Element#up. [Prototype LH #452] [eno, jddalton]
* Reorganize String.prototype extensions. [jddalton]
* Optimize String#camelize, String#gsub, String#inspect, String#sub and Template#evaluate by using String#replace. [jddalton, kangax]
* unit test: Comment-out benchmarks in the String unit tests. [jddalton]
* Add RegExp#clone to allow easy regexp cloning and changing of pattern flags. [jddalton]
* Ensure correct behavior of String#replace, in Safari 2, when passing a function as the `replacement` argument. [Prototype LH #534] [Dean Edwards, jddalon, kangax, Samuel Lebeau]
* Allow Element#insert, Element#update, and Element#replace to insert comment, document fragment, document type, and text nodes. [jddalton]
* Fix Element#update error on `buggy elements` when appending an element created by `toElement`. [jddalton]
* Optimize Array#inject to use Array#reduce if available. [jddalton, kangax]
* Fix bug in Array#concat substitution that caused it to exit early for falsy values. [jddalton]
* Optimize Class.create() and Class#addMethods and switch to using `this._super()`. [Joey Hurst, jddalton, John Resig]
Note: Backwards compatibility warning.
- The $super variable is no longer used to access a super's method.
Intead use `this._super()` in the body of the subclassed method.
* Rename Object.isOwnProperty() to Object.hasKey() and add Hash#hasKey. [apm, jddalton]
* Remove internal use of the $super variable in Fuse. [jddalton]
* Allow Element.addMethods() and Event.addMethods() to add `toString` and other special methods. [jddalton]
Note: Additions to HTMLElement.prototype will be ignored if HTML<tagName>Element.prototype has an existing
property with the same name. Extending elements by tagName will get around the issue.
* Ensure correct use of the delete operator. [jddalton]
* Allow IE8 to utilize the Element and Event prototype objects. [Andrew Dupont, jddalton]
* Add Event.addMethods() to allow adding methods to Event instances. [Prototype LH #203] [jddalton, Ken Snyder]
* Cleanup Fuse.Browser.Feature and Fuse.Browser.Bug and rename the Tester `add` and `remove` methods to `set` and `unset`. [jddalton]
* Fix private method nodeListSlice() causing Safari 2 to enter an infinite loop. [jddalton]
* Ensure Object.keys() and Object.values() accept function objects. [jddalton, kangax]
* Add `prototype` to the list of properties to iterate over in the IE fork of Object._each(). [jddalton]
* Add Object.isPrimitive(). [kangax]
* Simplify Element#readAttribute and Element#writeAttribute by using element.getAttributeNode() as the default method of reading attributes. [Diego Perini, jddalton]
Note: Backwards compatibility warning.
- Renamed Element._attributeTranslations to Element.Attribute
- Element.Attribute methods `_setAttrNode`, `_flag`, `_getAttr`, `_getAttrNode`, and `_getEv` are private and renamed
* Ensure Class.create(), in Safari 3.1+, works with objects containing regular expressions as properties. [jddalton, kangax]
* Ensure Object.isFunction() returns false for regular expressions. [kangax]
* unit test: Cleanup functional event tests by ensuring variables are locally scoped. [jddalton]
* Add IE support for the event.currentTarget property. [Prototype LH #519] [Daniel Varga, jddalton]
* Ensure the `target` property on events is never undefined in IE. [Prototype LH #383] [Mathias Karstädt, Diego Perini, Andrew Dupont]
Note: This update exposes a bug in Gecko/WebKit browsers where event.currentTarget/event.target are incorrect for window `onload` and document `dom:loaded` events.
* Fix Opera bug in Object.isOwnProperty() when checking properties of the `window` object. [Garrett Smith]
* Fixed critical IE8 bugs that prevented Fuse from loading. [jddalton]
- The nodeListSlice() should no longer cause a range error
- Account for element.currentStyle.hasLayout property permanently set to false
- Avoid iterating over Element.toString()
- Avoid replacing Event.prototype with itself
* Make Array#filter, Enumerable#filter, Hash#filter remove null/undefined values if no callback is provided. [jddalton]
* Rename "context" parameters to "thisArg" and "iterator" parameters to "callback". [FuseJS LH #21, #23] [jddalton, Joe Gornick]
* Ensure all Array, Enumerable, Hash, and ObjectRange methods, that allow a callback, pass the object they are acting on as its third argument. [jddalton]
Note: Backwards compatibility warning.
- The "_each" method is required to pass the second and third arguments to the callback.
* Optimize Array#forEach, Array#inject, Array#map, Enumerable#map by only using "call" when a "thisArg" is given. [jddalton]
* Fixed ObjectRange bug that caused it to exit the cached loop early when it encountered a 0 value. [jddalton]
* unit test: Ensure Enumerable tests against Enumerable methods and not Array methods. [jddalton]
* Make Array#each/Enumerable#each pass the object it's acting on as the third argument of the callback. [kangax]
* Remove Array#each alais of Array#forEach to avoid potential use of forEach's "thisArg" parameter. [Prototype LH #554] [jddalton, kangax, Yaffle]
* Cleanup unit test fixtures and source files. [jddalton]
* Add Object._each() and Object.each() to correctly handle for-in loops. [Rails Trac #11584] [jddalton, kangax, Tobie Langel]
* Make Object.keys() and Object.values() conform to the ECMA 3.1 draft. [jddalton]
* Add Object.isOwnProperty() to aid in detecting "own" vs. "inherited" properties. [Rails Trac #9700, #11043] [Prototype LH #243] [FuseJS LH #8] [arandes, Ben, grey, jddalton]
* Remove the "&_=" Safari 2 ajax bug workaround for the http PUT method. [Rails Trac #2258] [Prototype LH #327] [jddalton, Mark van Eijk, Shane Vitarana]
Fixed in Rails by changeset http://dev.rubyonrails.org/changeset/2106.
* Stop Element#show clearing display values when called before Element#hide. [Prototype LH #177] [jddalton, quamis]
* Stop Element#getHeight/Element#getWidth from setting an element's position to "absolute" because it causes shrink-wrapping. [Prototype LH #313] [datamagi, jddalton]
* Remove uneeded $R() and $H() calls so ObjectRange and Hash can be optional. [FuseJS LH #14] [jddalton]
* Change to initial Fuse namespace. [FuseJS LH #1] [jddalton]
Note: Backwards compatibility warning.
- Exposed Fuse.Browser.Bug() and Fuse.Browser.Feature()
- Moved browser user agent sniffs to Fuse.Browser.Agent
- Removed Fuse.BrowserFeatures
* Rename internal method "mergeList" to "concatList" to better express its functionality. [jddalton]
* Updates to Array API [FuseJS LH #15] [Prototype LH #356] [jddalton, Joe Gornick, quamis]
Note: Backwards compatibility warning.
- Added Array#insert method
- Renamed methods: include -> contains, uniq -> unique
- Removed methods: detect, reject, reverse
- Removed aliases: all, any, collect, entries, find, findAll, member, select
- Updated methods:
Array#contains: Added a strict paramter for strict only comparisons.
Array#first: Add optional parameters to accept a number/iterator.
* first(n): Returns an array containing the first n of the list.
* first(iterator, [context]): Returns first item when iterator returns true.
Array#last: Add optional parameters to accept a number/iterator.
* last(n): Returns an array containing the last n of the list.
* last(iterator, [context]): Returns last item when iterator returns true.
* unit test: Allow IE7+ to test "fixed" positioned elements and test String#endsWith with an empty/non-string pattern argument. [jddalton]
* Allow Object.isSameOrigin() to return true if the url ends with the document.domain which could be a suffix of the current domain. [Prototype LH #67] [jddalton, Mark Caudill, Per Melin]
* Make Object.isSameOrigin() allow urls containing default ports for http, https, and ftp protocols. [Prototype LH #301] [jddalton, Johan Gorter, Mark Caudill]
* Make Object.isSameOrigin() typecast the url as a string. [Prototype LH #251] [jddalton, mazengh]
* Move Ajax.Request#isSameOrigin to Object.isSameOrigin() so the dom:loaded event check may make use of it. [jddalton]
Note: Backwards compatibility warning.
* Make Array#grep and Enumerable#grep exit early if the regexp pattern is empty. [jddalton]
* Optimize Hash methods by replacing calls to "each" with for-in loops as well as change Hash aliases. [Rails Trac #3592] [Prototype LH #539] [aljoscha, Brad Avogel, jddalton, Romain Dorgueil]
Note: Backwards compatibility warning.
- Hash#index is alias of Hash#keyOf
- Hash#keyOf returns -1 if no match is found
- Hash#include searches for the first matching hash value
- Hash#filter, Hash#grep, Hash#reject, and Hash#zip return hashes
- Hash#partition returns an array containing two hashes.
* Make String#(gsub|sub) auto remove the "global" flag from regexp patterns. [jddalton]
* Add Object.isRegExp() data type detection method. [jddalton]
* Ensure String#gsub returns the correct result when passed uncommon patterns. [jddalton, Samuel Lebeau]
* Array optimizations. [jddalton, Joe Gornick, John Resig]
- Array#compact - Removed use of Array#select and added an option to remove "falsy" values
- Array#flatten - Removed use of Array#inject
- Array#include - Only use Array#indexOf
- Array#indexOf - Renamed parameter from i to fromIndex
- Array#inject - Renamed parameter memo to accumulator
- Array#map - If iterator isn't specified return cloned array
- Array#max|min - Use Math.max|min for non-sparse arrays when no iterator is given
- Array#toJSON - Removed use of Array#_each
- Array#uniq - Remove use of Array#inject and parameter sorted
- Array#without - Removed use of Array#select
- Array#intersect - Removed use of Array#_each and renamed parameter other to array
- Array#lastIndexOf - Renamed param i to fromIndex
* Remove unused feature test "ARGUMENTS_INSTANCEOF_ARRAY". [jddalton]
* Optimize ObjectRange by caching its range values on the first use of "_each". [jddalton]
* Optimize Enumerable methods by replacing calls to "each" with "_each" and change aliases to mimic ones set by the Array extensions. [jddalton]
* unit test: Enusre String#sub does not freeze when passed an empty pattern. [jddalton]
* Add support for control groups to Form.Element.EventObserver() and cleanup Form.Element.Observer(). [jddalton]
* Fix Bug('ARRAY_CONCAT_ARGUMENTS_BUGGY') detection and ensure Array#concat's replacement returns an array. [jddalton]
* Optimize Element#getOffsetParent by using the regexp case-insensitive flag instead of tagName.toLowerCase(). [jddalton]
* unit test: Add test to ensure Element#getOffsetParent doesn't raise an exception when called from the children of a document fragment. [jddalton]
* Simplify String#extractScripts and add a unit test to ensure empty scripts are not returned. [jddalton]
* Optimize Form/Field methods by replacing complex method calls with simple while-loops. [jddalton]
* Cleanup String#unescapeHTML and String#extractScripts' HTML comment matching regular expression. [jddalton]
* Cleanup Element._attributeTranslations.read.getEv(). [Andrew Dupont, jddalton]
* Renamed the PeriodicalExecuter class to Timer. [jddalton, Joe Gornick]
- Changed "currentlyExecuting" property to "executing"
- Changed "timer" property to "timerID"
- Remove registerCallback method
- Make onTimerEvent private
- Remove auto-start on instance initialization.
* Cleanup and optimize the event system. [jddalton]
- Reduce event cache complexity
- Take more advantage of lazy defined methods
- Add support for DOM Level 0 event management
- Remove browser sniffs in mouse button detection
- Auto clear window:load and dom:loaded event cache
- Minor cleanup to the functional event.html
* Avoid IE element.style.cssText bug effecting hidden elements. [jddalton]
Note: Accessing a hidden element's client/offset<dimension> properties before appending cssText will make the client/offset<dimension> values unchanged by the new style.
* Make Class constructors return the "initialize" method's return value. [Rails Trac #11481] [cch1]
* Make Event's private method isCssLoaded() fail when the "sheet" object of an element is null or undefined. [jddalton]
* Change the way Element.extend() detects XML nodes by testing for the existence of element.ownerDocument.body. [Diego Perini, jddalton]
* Minimize IE6 memory leak caused by Element.extend() and private variables "body", "docEl", and "root". [jddalton]
* Make Form.focusFirstElement() focus the first element instead of activating it. [Prototype LH #473] [jddalton, Robert Sosinski]
* Ensure Field.focus() doesn't throw an error when the element or its ancestors are not visible. [Prototype LH #521] [jddalton, Stefan Esterer]
* Ensure Array#last won't attempt a -1 index with zero length arrays. [Prototype LH #236] [jddalton, kangax]
* Minor source and whitespace cleanup. [jddalton]
* Cleanup stylesheet load detection in dom-loaded.js and implement a better detection scheme. [Diego Perini, jddalton]
* Optimize private method nodeListSlice() by replacing $A() calls with a while-loop and remove its dependency on the nodeList "length" property. [Diego Perini, jddalton]
* Optimize Hash#toJSON by using a direct reference of this._object instead of a clone. [jddalton]
* Remove dependency of Array#inject in Object.toQueryString, Hash#toQueryString and String#toQueryParams. [jddalton, Joe Gornick]
* Cleanup Object data type detection methods and utilize Object.prototype.toString.call() to access an objects ineternal [[Class]] property. [jddalton, kangax]
* unit test: Change all occurrences of window.location.toString() to window.location.href. [jddalton]
* Minor cleanup of Function#bind methods. [jddalton]
* Optimize private helper method prependList() and cleanup nodeListSlice(). [jddalton]
* Make document.viewport methods take advantage of the "root" private variable. [jddalton]
* Ensure Template#evaluate does not error when the evaluation object is null/undefined. [jddalton, Jürgen Hörmann]
* Add bgColor, vLink, and aLink to the Element._attributeTranslations.names mapping object. [jddalton, Thomas Lahn]
* Make Element#getOffsetParent follow the W3C specifications and treat TD, TH, and TABLE elements as valid offset parents. [jddalton]