Кросбраузерность 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'; } Его задача создать дополнительную приветственную страницу (Главная) по основному адресу форума. А истинную первую страницу (форум) сделать последующей с переходом на нее с главной. Приведенный скрипт работает в некоторых браузерах, но в других, чтобы перейти на Форум нужно сначала перейти на любую другую и уже оттуда перейти на форум. Например, в Мазиле не работает Помогите исправить. Где-то видимо не дописала условие, но не могу сообразить какое, чтобы поэкспериментировать |
Пошагово распишите, что должно происходить с юзером.
откуда он приходить и куда должен попадать. (как можно подробней) |
Как вариант, это
Цитата:
top.location = 'http://' + location.hostname + '/' + '#forum'; |
ksa,
теперь нигде не работает))) |
Подумала - покрутила, ошибка происходит в момент присваивания #forum второй ссылке. Она добавляется, но в мазиле (и некоторых других браузерах) при обнослении страницы тут же исчезает и переадресуется назад на первую ссылку
Т.е. проблема вот в этом location.reload(true); Как бы ее обойти. Чтобы перегружала, но оставляла в мазиле приставку |
Попробуйте this.href поменять на window.location.href (в обоих местах)
а в конце ф-ии добавить строку: return false; либо: event.preventDefault(); |
Белый шум,
нет. релоад нужен, чтобы страница обновлялась и показывалась истинная главная. Ваш код поставила, перехода на истинную нет в Мазиле. Там проблема в том, что при обновлении он добавляет к адресу '#forum' и тут же его анулирует. А как он пропадает снова высвечивается "главная" Если ли какая то функция, аналогичная релоаду, но "срабатывающая" в мазиле с учетом отработавшей функции? |
А зачем вам вообще нужен этот
location.reload(true); ?? Ведь новый УРЛ устанавливается строкой до этого... |
Белый шум, сейчас попробую еще раз более внятно
Есть страница в интернете. Для удобства назовем ее index - это главная страница форума. Когда пользователь переходит на нее с других сайтов, он должен попасть на заставку, которая фактически просто перекрывает реальную страницу. Но затем у него должна соранится возможность перейти на реальную index страницу, которой присваивается псевдо адрес index+ forum. Релоад как раз обновляет браузер и загружает реально существующую страницу вместо псевдостраницы |
По-моему вам нужен не релоад страницы, а просто скрыть заставку как сделано выше:
document.getElementById("pun-announcement").style.display = "none"; А если хотите именно релоад, то попробуйте перед этим изменить текущий урл с помощью хистори АПИ: window.history.replaceState({}, '', 'http://' + location.hostname + '/' + '#forum'); |
Часовой пояс GMT +3, время: 02:11. |