取得URL相對於另乙個URL的相對路徑

2022-04-04 12:10:58 字數 2132 閱讀 6048

今天群裡灰大出了個題:

1

function getrelativeurl(url, baseurl)

用了點時間寫了一下:

1

function getrelativeurl ( url, baseurl ) ,

7 r = ):\/\/(.*)/,

8 'domain' : /(^[-_a-za-z.]+)((?:\/|:|$)?.*)/,

9 'port' : /(?:^:)(\d+)((?:\/|$).*)/,

10 'word' : /[^, ]+/g,

11 };

1213 compare[ 'url' ] = parseurl( url );

14 compare[ 'baseurl' ] = parseurl( baseurl );

1516

if ( different( 'proto' ) || different( 'domain' ) || different( 'port' ) ) return

false; //

協議、網域名稱、埠不同

1718 path = compare.url.path;

19 basepath = compare.baseurl.path;

2021

while ( path.length && path[ 0 ] == basepath[ 0 ] )

2526

if ( path.length == 0 && basepath.length == 0 ) return './'; //

兩個url相同

2728

if ( path.length == 0 ) return parent( basepath.length ); //

baseurl是url的子目錄

2930

if ( basepath.length == 0 ) return path.join( '/' ) + '/'; //

url是baseurl的子目錄

3132

return parent( basepath.length ) + path.join( '/' ) + '/'; //

url和baseurl互不包含

3334

function different ( name )

3738

function notvalidurl ()

4142

function parseurl ( url ) ;

44 'proto,domain,port'.replace( r.word, function( name )

50 match = url.match( reg );

51 url = match[ 2 ];

52 parsed[ name ] = match[ 1 ];

53 });

54 parsed[ 'path' ] = url.replace(/\/+$/,'').split('/');

55return parsed;

56 }

5758

function parent ( level )

64 };

使用單元測試如下:

1 test("url和baseurl並非都是絕對路徑或都是相對路徑,沒有結果", function() );

89 test("不在同乙個域、同乙個協議、同乙個埠下,沒有結果", function() );

1516 test("是否以/結尾不影響結果",function() )

2223 test("相同目錄",function())

2930 test("url和baseurl中有乙個為根目錄",function() )

3738 test("其他",function() )

如有更好解法或發現錯誤,請不吝賜教:)

將某個url作為另乙個URL的引數

在某些用於跳轉的情況下,我們會將某個url作為引數進行攜帶,但由於該url中本身可能都需要攜帶引數,因此就出現了乙個url中存在多個 的情況,這會影響對該url中引數的解析,比如這種情況 此時可以使用encodeuricomponent對攜帶的url進行編碼處理,如下所示 encodeuricomp...

訪問URL時傳入另乙個URL作為引數

原文 這種情況下,d 4 這個引數會被當做是訪問 login.html 時的引數,而不是 device.html 的引數。解決辦法 對url 引數內容進行加碼,如下 後端獲取的時候再使用 unescape 進行解碼,就能拿到完整的路徑及引數了 but,對於已經發布版本的專案來說,不能修改後端 咋整?...

乙個URL的組成

2016 05 08 22 12 659人閱讀收藏 舉報 android 26 url的組成 url由三部分組成 協議型別,主機名和路徑及檔名。通過url可以指定的主要有以下幾種 http ftp gopher telnet file等。url的組成 url的組成 協議 1 protocol 協議 ...