Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.09.2017, 13:06
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

Кросбраузерность 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';
}

Его задача создать дополнительную приветственную страницу (Главная) по основному адресу форума. А истинную первую страницу (форум) сделать последующей с переходом на нее с главной.
Приведенный скрипт работает в некоторых браузерах, но в других, чтобы перейти на Форум нужно сначала перейти на любую другую и уже оттуда перейти на форум. Например, в Мазиле не работает
Помогите исправить. Где-то видимо не дописала условие, но не могу сообразить какое, чтобы поэкспериментировать
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2017, 14:03
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Пошагово распишите, что должно происходить с юзером.
откуда он приходить и куда должен попадать. (как можно подробней)
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2017, 14:13
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,218

Как вариант, это
Сообщение от Bicou
  this.href = 'http://' + location.hostname + '/' + '#forum';
  location.reload(true);
заменить на это...
  top.location = 'http://' + location.hostname + '/' + '#forum';
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2017, 17:07
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

ksa,
теперь нигде не работает)))
Ответить с цитированием
  #5 (permalink)  
Старый 01.10.2017, 01:01
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

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

location.reload(true);


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

Последний раз редактировалось Bicou, 01.10.2017 в 01:26.
Ответить с цитированием
  #6 (permalink)  
Старый 01.10.2017, 14:05
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Попробуйте this.href поменять на window.location.href (в обоих местах)
а в конце ф-ии добавить строку:
return false;
либо:
event.preventDefault();
Ответить с цитированием
  #7 (permalink)  
Старый 01.10.2017, 14:11
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

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

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

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

Последний раз редактировалось Bicou, 01.10.2017 в 14:20.
Ответить с цитированием
  #8 (permalink)  
Старый 01.10.2017, 14:44
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

А зачем вам вообще нужен этот
location.reload(true);
?? Ведь новый УРЛ устанавливается строкой до этого...
Ответить с цитированием
  #9 (permalink)  
Старый 01.10.2017, 19:54
Интересующийся
Отправить личное сообщение для Bicou Посмотреть профиль Найти все сообщения от Bicou
 
Регистрация: 15.08.2017
Сообщений: 26

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

Есть страница в интернете. Для удобства назовем ее index - это главная страница форума. Когда пользователь переходит на нее с других сайтов, он должен попасть на заставку, которая фактически просто перекрывает реальную страницу. Но затем у него должна соранится возможность перейти на реальную index страницу, которой присваивается псевдо адрес index+ forum.
Релоад как раз обновляет браузер и загружает реально существующую страницу вместо псевдостраницы
Ответить с цитированием
  #10 (permalink)  
Старый 01.10.2017, 23:05
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка location.href madflash001 Общие вопросы Javascript 2 14.06.2014 14:23
location.href Viral Events/DOM/Window 7 28.03.2013 14:06
IE6 + location.href Snipe Internet Explorer 4 12.11.2008 15:58
Кросбраузерность скрипта Воитель Общие вопросы Javascript 0 24.08.2008 13:02