]> source.dussan.org Git - jquery.git/commitdiff
Offset: fix iframe scrollTop/Left test for IE8 and iPhone
authorOleg Gaidarenko <markelog@gmail.com>
Wed, 24 Dec 2014 21:49:46 +0000 (00:49 +0300)
committerOleg Gaidarenko <markelog@gmail.com>
Wed, 24 Dec 2014 21:55:15 +0000 (00:55 +0300)
* IE8 need a doctype, otherwise IE will scroll it, but will
  still show old values. It wasn't noticable before, since IE8 will
  update values if in the dev tools you swtich to "Quirks mode"
  and then back again, then this tab will always show the correct values
  even if you update it

* iPhone resize the iframe by its content regardless of
  the width, height values, meaning it's not possible to scroll
  the iframe only its parent element

Ref ae30fb6c27a2121578d3ce7ca6e2ba1d205545b8

test/unit/offset.js

index 2692f7ad26c4981ea59dc08047f5df973fb24935..bede34a75099d90b9e49c59467582e80156bf6a9 100644 (file)
@@ -550,17 +550,31 @@ test("fractions (see #7730 and #7885)", function() {
 test("iframe scrollTop/Left (see gh-1945)", function() {
        expect( 2 );
 
-       // Tests scrollTop/Left with iframes
        var ifDoc = jQuery( "#iframe" )[ 0 ].contentDocument;
-       jQuery( "#iframe" ).css( "width", "50px" ).css( "height", "50px" );
-       ifDoc.write( "<div style='width: 1000px; height: 1000px;'></div>" );
-       ifDoc.close();
 
-       jQuery( ifDoc ).scrollTop( 200 );
-       jQuery( ifDoc ).scrollLeft( 500 );
+       // iPhone resize the iframe by its content
+       // meaning it's not possible to scroll the iframe only its parent element
+       if ( /iphone os/i.test( navigator.userAgent ) ) {
+               equal( true, true, "iPhone doesn't scroll the iframes" );
+               equal( true, true, "iPhone doesn't scroll the iframes" );
 
-       equal( jQuery( ifDoc ).scrollTop(), 200, "$($('#iframe')[0].contentDocument).scrollTop()" );
-       equal( jQuery( ifDoc ).scrollLeft(), 500, "$($('#iframe')[0].contentDocument).scrollLeft()" );
+       } else {
+               // Tests scrollTop/Left with iframes
+               jQuery( "#iframe" ).css( "width", "50px" ).css( "height", "50px" );
+
+               // Support: IE8
+               // Need a doctype, otherwise IE will scroll it but will still show old values
+               ifDoc.write( "<!DOCTYPE><div style='width: 1000px; height: 1000px;'></div>" );
+
+               // Support: IE8
+               ifDoc.close();
+
+               jQuery( ifDoc ).scrollTop( 200 );
+               jQuery( ifDoc ).scrollLeft( 500 );
+
+               equal( jQuery( ifDoc ).scrollTop(), 200, "$($('#iframe')[0].contentDocument).scrollTop()" );
+               equal( jQuery( ifDoc ).scrollLeft(), 500, "$($('#iframe')[0].contentDocument).scrollLeft()" );
+       }
 });
 
 })();