Перенаправление на мобильный * только *, если есть определенный якорь?(мой текущий код перенаправляет, но игнорирует условные) - PullRequest
0 голосов
/ 16 ноября 2018

На мобильном устройстве я бы перенаправил на поддомен store.website.com, только если URL-адрес website.com/#store.Если URL не тот, я бы сделал перенаправление на поддомен m.website.com.Следующее всегда перенаправляет на поддомен хранилища, если URL-адрес просто website.com, привязка хранилища или нет:

var url = "http://website.com/#store";
var hash = url.substring(url.indexOf("#")+1);
if (hash == "store") {
window.location.replace("http://store.website.com");
} else if (window.location.href == "http://website.com") {
window.location.replace("http://m.website.com");
} 

Я получаю тот же результат, если заменить оператор 'else if' на простой 'else', или если я вообще опущу утверждение else.В любом случае он всегда перенаправляет на store.website.com.Есть ли небольшая корректировка, которую я должен сделать здесь, чтобы заставить код работать так, как задумано, или, возможно, совершенно другой метод, который должен помочь?Спасибо

Ответы [ 4 ]

0 голосов
/ 17 ноября 2018

Это потому, что переменная url всегда установлена ​​на http://website.com/#store

var url = "http://website.com/#store";

Измените это на:

var url = window.location.href;

window.location.href будет получать текущий адрес.Тогда хэш должен быть правильным.

или учиться на этом коде, используя вместо этого location.hash:

var hash = window.location.hash;

if (hash == "#store")
{
    window.location.replace("http://store.website.com");
}
else if (window.location.hostname == "website.com")
{
    window.location.replace("http://m.website.com");
}

Fist мы используем window.location.hash, чтобы получить часть хеша и сопоставить ее.Если это не проходит, проверьте имя хоста.не используйте полный URL.Если кто-то входит с использованием HTTPS вместо HTTP, он не пройдет.Поэтому используйте window.location.hostname для сопоставления доменного имени.

Имейте в виду, что этот код повлияет не только на мобильные устройства, если вы не проверите, используется ли мобильное устройство, в противном случае пользователи настольных компьютеров будут перенаправлены на m.website.com тоже.

0 голосов
/ 17 ноября 2018

Этот маленький скрипт вы бы:

var hash = window.location.hash

hash && hash === "#store" ? window.location.replace("http://store.website.com") : window.location.replace("http://m.website.com")
0 голосов
/ 17 ноября 2018

Ваш URL всегда является фиксированной строкой. Вместо этого вы должны проверить window.location.href.

var url = window.location.href;
var hash = url.substring(url.indexOf("#")+1);
if (hash == "store") {
window.location.replace("http://store.website.com");
} else if (url == "http://website.com") {
window.location.replace("http://m.website.com");
} 
0 голосов
/ 17 ноября 2018

В приведенном выше коде вы всегда обновляете местоположение, потому что hash всегда равно 'store'. Вы никогда не доберетесь до второго if.

Возможно, вам следует прочитать хеш из window.location.href вместо переменной url.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...