@@ -260,19 +260,7 @@ function pjax(options) {
260
260
261
261
if ( container . title ) document . title = container . title
262
262
context . html ( container . contents )
263
-
264
- container . scripts . each ( function ( _ , script ) {
265
- var $script = $ ( script )
266
- var src = $script . attr ( 'src' )
267
- if ( $ ( 'script[src="' + src + '"]' ) . length ) return
268
-
269
- var target = document . head || context . get ( 0 )
270
- var tag = document . createElement ( 'script' )
271
- tag . type = $script . attr ( 'type' ) || "text/javascript"
272
- tag . async = false
273
- tag . src = src
274
- target . appendChild ( tag )
275
- } )
263
+ executeScriptTags ( container . scripts )
276
264
277
265
// Scroll to top by default
278
266
if ( typeof options . scrollTo === 'number' )
@@ -652,6 +640,26 @@ function extractContainer(data, xhr, options) {
652
640
return obj
653
641
}
654
642
643
+ // Download and execute script tags once.
644
+ //
645
+ // scripts - Array of script Elements
646
+ //
647
+ // Returns nothing.
648
+ function executeScriptTags ( scripts ) {
649
+ scripts . each ( function ( _ , script ) {
650
+ var $script = $ ( script )
651
+ var src = $script . attr ( 'src' )
652
+ if ( $ ( 'script[src="' + src + '"]' ) . length ) return
653
+
654
+ var target = document . head || context . get ( 0 )
655
+ var tag = document . createElement ( 'script' )
656
+ tag . type = $script . attr ( 'type' ) || "text/javascript"
657
+ tag . async = false
658
+ tag . src = src
659
+ target . appendChild ( tag )
660
+ } )
661
+ }
662
+
655
663
// Internal: History DOM caching class.
656
664
var cacheMapping = { }
657
665
var cacheForwardStack = [ ]
0 commit comments