JavaScriptのlocation
オブジェクトについて、pathname
に_display
と入るこれは一体どういう意味でなんの役に立つのでしょうか?
javascript
1// urlを与えてlocationオブジェクトを得る 2var parse_url = function( url ){ 3 var r = {}; 4 var re = /^(?:(https?:)?(?://(([^/:]+)(?::([0-9]+))?)))?(/?[^?#]*)(??[^?#]*)(#?.*)/; 5 var p = 'protocol host hostname port pathname search hash'.split(' '); 6 var m = String( url ).match( re ); 7 if( m ) { 8 p.forEach(function( prop, idx ){ 9 r[prop] = typeof m[(idx+1)] === 'undefined' ? null: m[(idx+1)]; 10 }); 11 } 12 // 相対指定でない(絶対指定、プロトコル略記、ホストルート記述のとき) 13 if( r.pathname.indexOf('.') !== 0 ){ 14 p.forEach(function( prop ){ 15 if( r[prop] === '' ) r[prop] = location[prop]; 16 }); 17 } 18 return r; 19}; 20 21// 普通にlocationオブジェクトを取得 22console.log('locationの値',location); 23 24// 関数で取得 25var url = 'http://example.com'; 26var mylocation = parse_url(url); 27console.log('mylocationの値',mylocation);
上記で最後から3行目のvar url
ですが、この最後に/
があるときはmylocation
のpathname
の値は/
になるのですが、
しかし最後に/
がないときはpathname
の値は_display
になりまして、これが何なのかよくわかりません。
どういうものでしょうか?
実用的にはホームかどうか判定したいときに下記としていますが、勝手に入る_display
に対応するこの条件に気持ち悪さを感じています。
javascripot
1var paths = mylocation.pathname.split('/'); 2const page = paths[1] == '_display' || paths[1] == '/' || !paths[1] ? 'home' : paths[1]; 3console.log('pageの値',page);
MDNを見ても載っていないですし、どなたかご説明できる方いらっしゃいますでしょうか。