@@ -5,6 +5,10 @@ $.each([true, false], function() {
55var disabled = this == false
66var s = disabled ? " (disabled)" : ""
77
8+ var ua = navigator . userAgent
9+ var safari = ua . match ( "Safari" ) && ! ua . match ( "Chrome" ) && ! ua . match ( "Edge" )
10+ var chrome = ua . match ( "Chrome" ) && ! ua . match ( "Edge" )
11+
812module ( "$.pjax fallback" + s , {
913 setup : function ( ) {
1014 var self = this
@@ -123,6 +127,8 @@ asyncTest("scrolls to anchor at top page"+s, function() {
123127
124128 this . loaded = function ( frame ) {
125129 setTimeout ( function ( ) {
130+ equal ( frame . location . pathname , "/anchor.html" )
131+ equal ( frame . location . hash , "#top" )
126132 equal ( frame . window . scrollY , 8 )
127133 start ( )
128134 } , 100 )
@@ -132,6 +138,14 @@ asyncTest("scrolls to anchor at top page"+s, function() {
132138 url : "/anchor.html#top" ,
133139 container : "#main"
134140 } )
141+
142+ if ( disabled ) {
143+ equal ( frame . location . pathname , "/home.html" )
144+ equal ( frame . location . hash , "" )
145+ } else {
146+ equal ( frame . location . pathname , "/anchor.html" )
147+ equal ( frame . location . hash , "#top" )
148+ }
135149} )
136150
137151asyncTest ( "empty anchor doesn't scroll page" + s , function ( ) {
@@ -170,7 +184,23 @@ asyncTest("scrolls to anchor at bottom page"+s, function() {
170184 } )
171185} )
172186
187+ asyncTest ( "scrolls to named encoded anchor" + s , function ( ) {
188+ var frame = this . frame
173189
190+ equal ( frame . window . scrollY , 0 )
191+
192+ this . loaded = function ( frame ) {
193+ setTimeout ( function ( ) {
194+ equal ( frame . window . scrollY , 10008 )
195+ start ( )
196+ } , 10 )
197+ }
198+
199+ frame . $ . pjax ( {
200+ url : "/anchor.html#%62%6F%74%74%6F%6D" ,
201+ container : "#main"
202+ } )
203+ } )
174204
175205asyncTest ( "sets GET method" + s , function ( ) {
176206 var frame = this . frame
@@ -396,4 +426,36 @@ asyncTest("handle form submit"+s, function() {
396426 frame . $ ( "form" ) . submit ( )
397427} )
398428
429+ asyncTest ( "browser URL is correct after redirect" + s , function ( ) {
430+ var frame = this . frame
431+
432+ this . loaded = function ( ) {
433+ equal ( frame . location . pathname , "/hello.html" )
434+ var expectedHash = safari && disabled ? "" : "#new"
435+ equal ( frame . location . hash , expectedHash )
436+ start ( )
437+ }
438+
439+ frame . $ . pjax ( {
440+ url : "redirect.html#new" ,
441+ container : "#main"
442+ } )
443+ } )
444+
445+ asyncTest ( "server can't affect anchor after redirect" + s , function ( ) {
446+ var frame = this . frame
447+
448+ this . loaded = function ( ) {
449+ equal ( frame . location . pathname , "/hello.html" )
450+ var expectedHash = safari && disabled ? "" : "#new"
451+ equal ( frame . location . hash , expectedHash )
452+ start ( )
453+ }
454+
455+ frame . $ . pjax ( {
456+ url : "redirect.html?anchor=server#new" ,
457+ container : "#main"
458+ } )
459+ } )
460+
399461} )
0 commit comments