4

JavaScriptで相対URLを取得する簡単な方法はありますか? 使用しようとしてwindow.location.hrefいますが、絶対パスを返します。

私がやろうとしているのはこれです:私は2つのページを持っています。mobile.html と desktop.html です。次のように、1つのjavascriptファイルを使用して、ユーザーがモバイルまたはデスクトップのどちらを使用しているかを検出したいと思います(私は知っていますが、これはあまり良い方法ではありません..):

var is_mobile = //alot of text from http://detectmobilebrowsers.com/
                //that returns true/false, this works fine

if (is_mobile){

    if (window.location.href != "mobile.html"){
        window.location = "mobile.html";
    }
}

else {
    if (window.location.href != "desktop.html"){
        window.location ="desktop.html";
    }
}

したがって、絶対パスの問題は、mobile/desktop.html のいずれかをテストすると、両方とも無限ループ pagerefresh に入るということです。

4

4 に答える 4

6
var page = window.location.pathname.split('/').pop();

if (isMobile && page !== 'mobile.html')
    window.location = 'mobile.html';
else if (!isMobile && page !== 'desktop.html')
    window.location = 'desktop.html';
于 2012-10-29T19:46:20.807 に答える
1

どちらかのHTMLファイルで終わるかどうかをテストするだけです。正規表現を使用できます。

if(/desktop\.html$/.test(window.location.href)) {
     // code for desktop
} else if(/mobile\.html$/.test(window.location.href)) {
     // code for mobile
}
于 2012-10-29T19:21:16.647 に答える
1

正規表現を使用せずに、location.href が mobile.html で終わっているかどうかを調べる別の解決策:

if(window.location.href.indexOf("mobile.html") != (window.location.href.length - "mobile.html".length)) {
  ..
}
于 2012-10-29T19:37:51.200 に答える
0

URL.getRelativeURL

URLと呼ばれる標準オブジェクトの防弾パブリックドメイン拡張がありますgetRelativeURL

これで問題は解決します:

var loc = new URL(location.href); //get the current location
var dir = new URL(".", loc); //get the current directory
var rel = loc.getRelativeURL(dir); //relative link from dir to loc

if( rel !== "mobile.html" ){ ... }

ライブでお試しください。 Gist で表示します。

于 2016-08-26T12:23:04.960 に答える