@@ -1011,4 +1011,44 @@ if ($.support.pjax) {
1011
1011
ok ( frame . $ . pjax . state . id )
1012
1012
oldId = frame . $ . pjax . state . id
1013
1013
} )
1014
+
1015
+ asyncTest ( "handles going back to pjaxed state after reloading a fragment navigation" , function ( ) {
1016
+ var iframe = this . iframe
1017
+ var frame = this . frame
1018
+
1019
+ // Get some pjax state in the history.
1020
+ frame . $ . pjax ( {
1021
+ url : "hello.html" ,
1022
+ container : "#main" ,
1023
+ } )
1024
+ frame . $ ( "#main" ) . on ( "pjax:complete" , function ( ) {
1025
+ var state = frame . history . state
1026
+ ok ( frame . history . state )
1027
+ ok ( frame . $ . pjax . state )
1028
+
1029
+ // Navigate to a fragment, which will result in a new history entry with
1030
+ // no state object. $.pjax.state remains unchanged however.
1031
+ iframe . src = frame . location . href + '#foo'
1032
+ ok ( ! frame . history . state )
1033
+ ok ( frame . $ . pjax . state )
1034
+
1035
+ // Reload the frame. This will clear out $.pjax.state.
1036
+ frame . location . reload ( )
1037
+ $ ( iframe ) . one ( "load" , function ( ) {
1038
+ ok ( ! frame . history . state )
1039
+ ok ( ! frame . $ . pjax . state )
1040
+
1041
+ // Go back to #main. We'll get a popstate event with a pjax state
1042
+ // object attached from the initial pjax navigation, even though
1043
+ // $.pjax.state is null.
1044
+ window . iframeLoad = function ( ) {
1045
+ ok ( frame . history . state )
1046
+ ok ( frame . $ . pjax . state )
1047
+ equal ( frame . $ . pjax . state . id , state . id )
1048
+ start ( )
1049
+ }
1050
+ frame . history . back ( )
1051
+ } )
1052
+ } )
1053
+ } )
1014
1054
}
0 commit comments