Changeset 8799
- Timestamp:
- 02/03/08 22:29:29 (8 months ago)
- Files:
-
- spinoffs/prototype/trunk/CHANGELOG (modified) (1 diff)
- spinoffs/prototype/trunk/src/dom.js (modified) (3 diffs)
- spinoffs/prototype/trunk/test/unit/dom.html (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
spinoffs/prototype/trunk/CHANGELOG
r8798 r8799 1 * Prevent Element#cumulativeOffset, Element#getOffsetParent, Element#positionedOffset, Element#viewportOffset and Element#clonePosition from throwing an error in IE when called on a parent-less element. Closes #9416, #10192, #10248. [ronstoney, psiborg, kangax] 2 1 3 * Prevent Enumerable#eachSlice from entering into an endless loop if passed an argument smaller than 1. Closes #10665. [kangax, Tobie Langel] 2 4 spinoffs/prototype/trunk/src/dom.js
r8796 r8799 718 718 function(proceed, element) { 719 719 element = $(element); 720 // IE throws an error if element is not in document 721 try { element.offsetParent } 722 catch(e) { return $(document.body) } 720 723 var position = element.getStyle('position'); 721 724 if (position !== 'static') return proceed(element); … … 731 734 function(proceed, element) { 732 735 element = $(element); 736 try { element.offsetParent } 737 catch(e) { return Element._returnOffset(0,0) } 733 738 var position = element.getStyle('position'); 734 739 if (position !== 'static') return proceed(element); … … 745 750 ); 746 751 }); 752 753 Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap( 754 function(proceed, element) { 755 try { element.offsetParent } 756 catch(e) { return Element._returnOffset(0,0) } 757 return proceed(element); 758 } 759 ); 747 760 748 761 Element.Methods.getStyle = function(element, style) { spinoffs/prototype/trunk/test/unit/dom.html
r8796 r8799 1619 1619 assertEnumEqual([afu.offsetLeft, afu.offsetTop], 1620 1620 afu.positionedOffset()); 1621 1622 var element = new Element('div'), offset = element.positionedOffset(); 1623 assertEnumEqual([0,0], offset); 1624 assertIdentical(0, offset.top); 1625 assertIdentical(0, offset.left); 1626 }}, 1627 1628 testCumulativeOffset: function() {with(this) { 1629 var element = new Element('div'), offset = element.cumulativeOffset(); 1630 assertEnumEqual([0,0], offset); 1631 assertIdentical(0, offset.top); 1632 assertIdentical(0, offset.left); 1621 1633 }}, 1622 1634 … … 1630 1642 assertEnumEqual([20,30], 1631 1643 $('absolute_relative_undefined').viewportOffset()); 1644 var element = new Element('div'), offset = element.viewportOffset(); 1645 assertEnumEqual([0,0], offset); 1646 assertIdentical(0, offset.top); 1647 assertIdentical(0, offset.left); 1632 1648 }}, 1633 1649 … … 1637 1653 assertEqual('absolute_relative', $('inline').getOffsetParent().id); 1638 1654 assertEqual('absolute_relative', $('absolute_relative_undefined').getOffsetParent().id); 1655 1656 assertEqual(document.body, new Element('div').getOffsetParent()); 1639 1657 }}, 1640 1658