2013-04-02 3 views
6

Я знаю, что это вопрос, который много обсуждался, но я не могу понять, почему он не работает для меня.window.location.href не перенаправляет

Это моя функция:

function ShowComments(){ 

alert("fired"); 
var movieShareId = document.getElementById('movieId'); 
//alert("found div" + movieShareId.textContent || movieShareId.innerText); 
//alert("redirect location: /comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/"); 
window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/"; 
var newLocation = window.location; 
//alert("full location: " + window.location); 

} 

Если у меня есть предупреждения раскомментировать или если у меня есть Bugzilla Мозиллы открыть это работает нормально, в противном случае он не перенаправляет на другую страницу.

Любые идеи, почему?

+2

В чем смысл 'var newLocation = window.location;'? Никакая строка не должна выполняться после изменения window.location. –

+0

Как вы называете эту функцию? Вы делаете что-то еще в тот момент, что может повлиять на изменение местоположения? – Guffa

ответ

3

window.location.replace это лучший способ подражать редирект:

function ShowComments(){ 
    var movieShareId = document.getElementById('movieId'); 
    window.location.replace("/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/"); 
} 

Больше информации о том, почему window.location.replace лучший Javascript редирект можно найти right here.

+0

все еще не работает. – user2235124

+0

Точка в ответе, на которую вы ссылаетесь, - это след в истории. Я не понимаю, насколько это важно. –

3

Некоторые скобки отсутствуют.

Изменить

window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/"; 

в

window.location = "/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/"; 

приоритет не отдается || по сравнению с +.

Удалить все после window.location Назначение: этот код не должен выполняться при изменении страницы.

+0

еще не повезло ... – user2235124

+0

@ user2235124 Есть и другие проблемы на вашей странице, я думаю. И тот факт, что у вас есть код после назначения местоположения, заставляет меня подозревать большие логические проблемы. Можете ли вы создать [скрипку] (http://jsbin.com), показывающую вашу проблему? –

24

Если вы вызываете эту функцию через кнопку отправки. Это может быть причиной того, что браузер не перенаправляет. Он запустит код в функции, а затем отправит страницу вместо перенаправления. В этом случае измените тег типа вашей кнопки.

+3

Спасибо. Помогли много. У меня была кнопка «type» как «submit». Изменил его на «reset», и он сработал. – richie

+0

Наверное, проблема такого рода, часто связана с нажатием кнопки или «вводом» события, и отправкой формы. – Alex

+0

Вы абсолютно сделали свой день. 12h google и stackoverflow ищут это. Верхний. – MDaldoss

0

Убедитесь, что вы не посылает '#' в конце вашего URL-адреса. В моем случае это препятствовало работе window.location.href.

Смежные вопросы