window.location.href не работает для Chrome

Этот код работает для Firefox, но не для Chrome. Я считаю, что это window.location.href, но что я могу сделать, чтобы эта работа работала для хрома. В основном это переключает страницы.

<!DOCTYPE html>
<html>
 <head>
    <script src="http://code.jquery.com/jquery-1.6.4.js"></script>
<script>
$(document).keydown(function(e){    
    if (e.keyCode == 37) {  // left
       window.location.href = $('#prev').attr('href');   
       return false;
    } else if (e.keyCode == 39) {  // right
       window.location.href =  $('#next').attr('href');  
       return false;
    }
});


</script>


   </head>
 <body>


  <div style="display:hidden;">
    <a id="next" href=<?php echo "readerapp.php?mode=$mode&pagenumber=$next";?>></a>
    <a id="prev" href=<?php echo "readerapp.php?mode=$mode&pagenumber=$last";?>></a>
</div>
   </body>
</html>

person Mathew Pregasen    schedule 09.08.2013    source источник
comment
Какое значение возвращает PHP?   -  person Karl Anderson    schedule 09.08.2013
comment
В хроме работает. Какую версию хрома вы используете?   -  person Konsole    schedule 09.08.2013


Ответы (6)


Попробуйте с window.location:

$(document).keydown(function(e){
    if (e.keyCode == 37) {  // left
        window.location = $('#prev').attr('href');   
        return false;
    } else if (e.keyCode == 39) {  // right
        window.location =  $('#next').attr('href');  
        return false;
    }
});
person Rejayi CS    schedule 09.08.2013
comment
Разница? Почему вы это должны работать? А как насчет href? - person Green; 14.07.2016

У меня была та же проблема, и я нашел две работы для нее. первый способ — установить тайм-аут кадра, поэтому код будет таким:

setTimeout(function () { document.location.href = "nextpage.html" }, 1000);

второе решение - назначить следующую страницу для window.location, и это будет следующим образом:

window.location.assign("nextpage.html");

Надеюсь, поможет.

person Hooman    schedule 18.01.2016
comment
Это единственное решение, которое сработало для меня во всех браузерах (даже в мобильных). - person T3rm1; 20.06.2017
comment
document.location.href = "nextpage.html" не работает, но когда я добавляю тайм-аут, он работает. - person sharun k k; 02.12.2020

Пути, которые вы отправляете в браузер, являются относительными. Вам нужно будет предоставить JS полный URL-адрес. Попробуй это:

window.location.href = 'http://'+ window.location.host + $('#next').attr('href');

В качестве быстрого примера:

На этой странице откройте консоль в Chrome (Shift+CTRL+j) и введите:

window.location.href = 'http://' + window.location.host + $('.bottom-notice a:last').attr('href');

Он перенаправит вас на https://stackoverflow.com/questions/ask.

person aleksblago    schedule 09.08.2013
comment
У меня возникла эта проблема, и добавление в window.location.host помогло мне. - person MorkPork; 20.11.2013

Итак, я знаю, что это немного старая тема, но, поскольку это результат № 1 в Google при поиске, я решил добавить сюда свои два цента.

Для меня проблема заключалась в том, что я делал это в fancyBox и вызывал «parent.jQuery.fancybox.getInstance().close();» сразу после. В IE это работало нормально, но я думаю, что в Chrome вызов .close() мешал перенаправлению.

Решение состояло в том, чтобы просто удалить эту строку. Окно window.location.href все равно заставило его закрыться, так как главное окно было перенаправлено.

person Kiran Ramaswamy    schedule 03.11.2019

Нажатие input type="submit" не позволяет сценарию установить location.href

input type="button" работает нормально.

person Guest Gerard    schedule 01.02.2017

После перезапуска Chrome проблема у меня исчезла.

person avatoor    schedule 22.12.2014