Удалить # из URL при перенаправлении JavaScript - PullRequest
2 голосов
/ 03 апреля 2012

У меня сейчас интересная проблема.Я использую Facebook PHP SDK для аутентификации пользователей на моем сайте.По первому запросу я передаю URL-адрес перенаправления, и все работает, как и ожидалось, пользователи отправляются обратно на указанный URL-адрес.

На этой странице, которую мы будем называть «Промежуточная страница», ониперенаправлен на мою вторую страницу, которую мы будем называть «Домашняя страница».И здесь можно заметить, что к URL добавлен интересный #_=_.Эта проблема обсуждается здесь: Обратный вызов Facebook добавляет '# _ = _' к URL-адресу возврата .

Я реализовал решение JavaScript на этой странице;Однако остается одна проблема.Фактическая хеш-часть URL остается, хотя странные символы подчеркивания пропали.Итак, и это не большая проблема, теперь URL-адрес ./home#.

Я рассмотрел несколько способов исправить это: Как удалить хэш из window.location с помощью JavaScript без обновления страницы? .

Однако, по-видимому, эти решенияНужно обновить страницу, чтобы работать.Очевидно, что это не самый эффективный и удобный способ сделать это.

Теперь я подумал, что, поскольку я, когда мой пользователь возвращается на мою «Промежуточную страницу», перенаправляя его еще раз на мою «домашнюю страницу», часть операции обновления может быть каким-то образом пропущена.,Хотя я могу быть абсолютно неправ.

Итак, чтобы сделать вывод: есть ли способ удалить оставшуюся хэш-часть URL, не перезагружая мою «Промежуточную страницу», но удалив ее, как только я перенаправлю на свою »Домашняя страница '?

РЕДАКТИРОВАТЬ: я перенаправить пользователя через PHP, используя: header('Location: ./home');.

1 Ответ

2 голосов
/ 03 апреля 2012

На самом деле это невозможно во всех браузерах, использующих JavaScript, как я пытался сделать это в прошлом. Тем не менее, вы можете использовать HTML 5 для достижения того же, это использует HTML5 History API

function deleteHash(){ 
    // Remove the hash by rewriting URL without it.
    history.pushState("",document.title,window.location.pathname + window.location.search);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...