Is there an easy way to get the relative url with javascript? Im trying to use window.location.href
but it returns the absolute path.
What im trying to do is this: I have two pages; mobile.html and desktop.html. I want to use ONE javascript-file to detect whether the user is on a mobile or desktop (I know, this is not a very good way to do it..) like this:
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";
}
}
So the problem with absolute path is that when testing either mobile/desktop.html they both go into infinite loop pagerefresh..
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';
Just test if it ends with either HTML file. You could use regular expressions:
if(/desktop\.html$/.test(window.location.href)) {
// code for desktop
} else if(/mobile\.html$/.test(window.location.href)) {
// code for mobile
}
Another solution to find out whether the location.href ends with mobile.html or not, without using regular expressions:
if(window.location.href.indexOf("mobile.html") != (window.location.href.length - "mobile.html".length)) {
..
}
URL.getRelativeURL
There's a bullet-proof public-domain extension for the standard URL
object called getRelativeURL
.
This would solve the problem for you:
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" ){ ... }
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.