Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает location.href при onclick в теге <button> (https://javascript.ru/forum/misc/49513-ne-rabotaet-location-href-pri-onclick-v-tege-button.html)

fError 16.08.2014 14:16

Не работает location.href при onclick в теге <button>
 
function goGoogle(){
    location.href='http://www.google.ru'
}


<input type="button"  value="Button1" onclick="goGoogle()">
- переходит на гугль
<button onclick="goGoogle()"> Button1</button>
- никакой реакции
alert\console.log отрабатывает и там и там нормально:help:

Erolast 17.08.2014 16:18

Проверь, не перезаписалась ли где переменная location.

igrok54 17.08.2014 16:55

лучше так:
function goGoogle(){
   window.location.href='http://www.google.ru';
}

fError 20.08.2014 14:40

Да кроме этих двух кнопок ничего и нет. Нечего там поверять. Бредота какая то =)

tsigel 20.08.2014 14:47

<button onclick="goGoogle(); return false"> Button1</button>


Странно, вообще у меня и то и то работает :)

skrudjmakdak 20.08.2014 14:55

у меня все работает:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <script type="text/javascript">
        function goGoogle(){
    location.href='http://www.google.ru'
}
    </script>
	<input type="button"  value="Button1" onclick="goGoogle()">

    <input type="button"  value="Button1" onclick="goGoogle()">
</body>
</html>


попробуй в функции поставь console.log(location);

tsigel 20.08.2014 14:57

skrudjmakdak,
А у меня ваш пример сыпит ошибку "Refused to display 'https://www.google.ru/?gws_rd=ssl' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'."

skrudjmakdak 20.08.2014 15:05

видимо из за фрейма. запустите в отдельном файле, должно быть ок

fError 21.08.2014 00:49

Короче разобрался в чём проблема. Всё оказалось просто, но всё равно не очень понятно. Если тег <button> находится вне формы, всё работает как надо. Как только обрамляешь его <form></form> - с локейшном всё плохо, алерты работают)) С инпутом такого нет. Почему??? Кто-нибудь может объяснить?

Так не работает. Уберёте form - заработает.
<!DOCTYPE html>
<html>
<head>
    <title>goGoogle</title>
</head>
<body>
    <script>
        function goGoogle(){
            window.location.href = "http://www.google.ru";
            alert("Click!!!");
        }
    </script>
    <form>
        <button onclick="goGoogle()">goGoogle tag-button</button>
        <input onclick="goGoogle()" type="button" value="goGoogle input-button">
    </form>

</body>
</html>

skrudjmakdak 21.08.2014 08:19

хм, действительно так, но если посм на вот такой код:
<!DOCTYPE html>
<html>
<head>
    <title>goGoogle</title>
</head>
<body onload="console.log(new Date());">
    <form>
        <button>goGoogle tag-button</button>
    </form>

</body>
</html>

то можно усмотреть, что страница передергивается при нажатии на кнопку.
п.с. запускать у себя, здесь не хотит

поэтому надо прописывать так: <button type="button">goGoogle tag-button</button>, видимо по дефаулту идет submit


Часовой пояс GMT +3, время: 03:29.