1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- window.Tracker = window.Tracker || {};
- Tracker.Path = function(){
- var protocolRegx, absoluteRegx, rootRegx, doubleDotRegx, singleDotRegx;
- protocolRegx = /^\w+:\/\//;
- absoluteRegx = /^\//;
- rootRegx = /^(\w*:?\/?\/?)([\w.]+)(\/)/;
- doubleDotRegx = /\/[^\/\.]+\/\.\.\//;
- singleDotRegx = /\/\.\//;
- return {
- getBase: function( document ){
- var base, url;
- base = document.querySelector( "base[href]" );
- if( base )
- url = base.href;
- else
- url = document.URL;
- url = url.split( /[?#]/ )[ 0 ];
- return url.slice( 0, url.lastIndexOf( "/" ) + 1 );
- },
- merge: function( base, url ){
- if( url.indexOf( "//" ) === 0 )
- return pageBaseProtocol + ":" + url;
- if( protocolRegx.test( url ) )
- return url;
- if( absoluteRegx.test( url ) ){
- if( rootRegx.test( base ) )
- url = RegExp.$1 + RegExp.$2 + url;
- else
- return url;
- }else{
- url = base + url;
- }
- while( doubleDotRegx.test( url ) )
- url = url.replace( doubleDotRegx, "/" );
- while( singleDotRegx.test( url ) )
- url = url.replace( singleDotRegx, "/" );
- return url;
- }
- }
- }();
|