@@ -43,6 +43,16 @@ var using = (function () {
4343 var modules = { } , loadedScripts = { } , dependencies = { } , definitions = { } , dependingOn = { } ;
4444 var runners = [ ] , selectors = { } , runnersCheckInProgress = false ;
4545
46+ var getAbsoluteUrl = ( function ( ) {
47+
48+ var a = document . createElement ( 'a' ) ;
49+
50+ return function ( url ) {
51+ a . href = url ;
52+ return a . href ;
53+ } ;
54+ } ( ) ) ;
55+
4656 function updateModule ( moduleName ) {
4757
4858 var deps = [ ] , depNames = dependencies [ moduleName ] , moduleResult ;
@@ -257,7 +267,8 @@ var using = (function () {
257267 function define ( moduleName , callback ) {
258268
259269 if ( exists ( moduleName ) ) {
260- throw new Error ( "Module '" + moduleName + "' is already defined." ) ;
270+ console . warn ( "Module '" + moduleName + "' is already defined." ) ;
271+ return capabilityObject ;
261272 }
262273
263274 definitions [ moduleName ] = callback ;
@@ -312,20 +323,39 @@ var using = (function () {
312323
313324 using . loadScript = function ( url ) {
314325
326+ url = getAbsoluteUrl ( url ) ;
327+
315328 var script = document . createElement ( "script" ) ;
316- var scriptId = "using_script_" + url ;
317329
318- if ( loadedScripts [ url ] || document . getElementById ( scriptId ) ) {
330+ if ( loadedScripts [ url ] || scriptExists ( url ) ) {
319331 return ;
320332 }
321333
322- script . setAttribute ( "id " , scriptId ) ;
334+ script . setAttribute ( "data-inserted-by " , "using.js" ) ;
323335
324336 script . src = url ;
337+ loadedScripts [ url ] = true ;
325338
326339 document . body . appendChild ( script ) ;
327340 } ;
328341
342+ function scriptExists ( url ) {
343+
344+ var exists = false ;
345+ var scripts = document . getElementsByTagName ( "script" ) ;
346+
347+ [ ] . forEach . call ( scripts , function ( script ) {
348+
349+ var src = script . getAttribute ( "src" ) ;
350+
351+ if ( src && getAbsoluteUrl ( src ) === url ) {
352+ exists = true ;
353+ }
354+ } ) ;
355+
356+ return exists ;
357+ }
358+
329359 return using ;
330360
331361} ( ) ) ;
@@ -420,8 +450,8 @@ using.ajax = (function () {
420450
421451
422452/*
423- WebStory Engine dependencies (v2016.7.0-final.1607292134 )
424- Build time: Fri, 29 Jul 2016 22:08:47 GMT
453+ WebStory Engine dependencies (v2016.7.0-final.1607301311 )
454+ Build time: Sat, 30 Jul 2016 11:11:58 GMT
425455*/
426456( function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; var f = new Error ( "Cannot find module '" + o + "'" ) ; throw f . code = "MODULE_NOT_FOUND" , f } var l = n [ o ] = { exports :{ } } ; t [ o ] [ 0 ] . call ( l . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ?n :e ) } , l , l . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ) ( { 1 :[ function ( require , module , exports ) {
427457/* global using, require */
@@ -9638,7 +9668,7 @@ define("WSE", function (DataBus, assets, commands, dataSources, functions) {
96389668
96399669 "use strict" ;
96409670
9641- var WSE = { } , version = "2016.7.0-final.1607292134 " ;
9671+ var WSE = { } , version = "2016.7.0-final.1607301311 " ;
96429672
96439673 DataBus . inject ( WSE ) ;
96449674
0 commit comments