Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Кросбраузерность location.href (https://javascript.ru/forum/css-html-firefox-mizilla/70747-krosbrauzernost-location-href.html)

Bicou 29.09.2017 13:06

Кросбраузерность location.href
 
Доброго времени. Есть скрипт
if (location.href[location.href.length-1] == '/') {
document.getElementById("pun-announcement").style.display = "none";

 document.getElementById("pun_wrap").outerHTML = document.getElementById("pun-navlinks").outerHTML + document.getElementById("portals").innerHTML;
}

document.getElementById("navindex").getElementsByTagName("a")[0].onclick = function() {
 if (location.href[location.href.length-1] == '/') {
  this.href = 'http://' + location.hostname + '/' + '#forum';
  location.reload(true);
}

else this.href = 'http://' + location.hostname + '/' + '#forum';
}

Его задача создать дополнительную приветственную страницу (Главная) по основному адресу форума. А истинную первую страницу (форум) сделать последующей с переходом на нее с главной.
Приведенный скрипт работает в некоторых браузерах, но в других, чтобы перейти на Форум нужно сначала перейти на любую другую и уже оттуда перейти на форум. Например, в Мазиле не работает
Помогите исправить. Где-то видимо не дописала условие, но не могу сообразить какое, чтобы поэкспериментировать

j0hnik 29.09.2017 14:03

Пошагово распишите, что должно происходить с юзером.
откуда он приходить и куда должен попадать. (как можно подробней)

ksa 29.09.2017 14:13

Как вариант, это
Цитата:

Сообщение от Bicou
  this.href = 'http://' + location.hostname + '/' + '#forum';
  location.reload(true);

заменить на это...
  top.location = 'http://' + location.hostname + '/' + '#forum';

Bicou 29.09.2017 17:07

ksa,
теперь нигде не работает)))

Bicou 01.10.2017 01:01

Подумала - покрутила, ошибка происходит в момент присваивания #forum второй ссылке. Она добавляется, но в мазиле (и некоторых других браузерах) при обнослении страницы тут же исчезает и переадресуется назад на первую ссылку
Т.е. проблема вот в этом

location.reload(true);


Как бы ее обойти. Чтобы перегружала, но оставляла в мазиле приставку

Белый шум 01.10.2017 14:05

Попробуйте this.href поменять на window.location.href (в обоих местах)
а в конце ф-ии добавить строку:
return false;
либо:
event.preventDefault();

Bicou 01.10.2017 14:11

Белый шум,
нет. релоад нужен, чтобы страница обновлялась и показывалась истинная главная.
Ваш код поставила, перехода на истинную нет в Мазиле.

Там проблема в том, что при обновлении он добавляет к адресу '#forum' и тут же его анулирует. А как он пропадает снова высвечивается "главная"

Если ли какая то функция, аналогичная релоаду, но "срабатывающая" в мазиле с учетом отработавшей функции?

Белый шум 01.10.2017 14:44

А зачем вам вообще нужен этот
location.reload(true);
?? Ведь новый УРЛ устанавливается строкой до этого...

Bicou 01.10.2017 19:54

Белый шум, сейчас попробую еще раз более внятно

Есть страница в интернете. Для удобства назовем ее index - это главная страница форума. Когда пользователь переходит на нее с других сайтов, он должен попасть на заставку, которая фактически просто перекрывает реальную страницу. Но затем у него должна соранится возможность перейти на реальную index страницу, которой присваивается псевдо адрес index+ forum.
Релоад как раз обновляет браузер и загружает реально существующую страницу вместо псевдостраницы

Белый шум 01.10.2017 23:05

По-моему вам нужен не релоад страницы, а просто скрыть заставку как сделано выше:
document.getElementById("pun-announcement").style.display = "none";

А если хотите именно релоад, то попробуйте перед этим изменить текущий урл с помощью хистори АПИ:
window.history.replaceState({}, '', 'http://' + location.hostname + '/' + '#forum');


Часовой пояс GMT +3, время: 18:49.