Ссылка внутри кнопки, не работающей в Firefox
У меня есть две ссылки внутри кнопки, но ссылки, похоже, не работают на Firefox.
<button class="btn login">
<a href="/login"><b>Log In</b></a>
|
<a href="/signup"><b>Sign Up</b></a>
</button>
Я пробовал JavaScript onclick и перенаправлять - даже это не работает.
Ответы
Ответ 1
Это не работает, потому что это запрещено HTML5:
Модель контента: Фразинг контента, но не должно быть интерактивных потомок контента.
Интерактивный контент означает любой из следующих элементов:
аудио (если присутствует атрибут управления), информация о кнопке вставить iframe img (если присутствует атрибут usemap) input (если тип атрибут не находится в скрытом состоянии). Меню ярлыков (если тип атрибут находится в состоянии панели инструментов) (если атрибут usemap present) выберите textarea video (если присутствует атрибут управления)
Если он работает в некоторых браузерах, это просто потому, что они пытаются
играйте хорошо с неправильной разметкой и предоставляйте некоторые вид значимого результата.
Другими словами: перепишите свой HTML, это беспорядок. Если вы хотите, чтобы ссылки выглядели так, как будто они находятся в одной кнопке, поместите их в элемент div
и стиль, который будет выглядеть как один, вместо того, чтобы злоупотреблять семантически неправильными элементами для него.
Ответ 2
<a>
не разрешено внутри <button>
Содержание фраз, но не должно быть потокового потомка для интерактивного контента.
<a>
- интерактивный контент (независимо от того, имеет ли он href
, по-видимому, но ваш). Таким образом, вы не можете зависеть от того, есть ли ссылки в качестве дочерних элементов кнопки и что делает Firefox правильно. Используйте другой элемент, чтобы содержать <a>
s
Ответ 3
У меня есть две ссылки внутри кнопки, но [...]
"Да, но позвольте мне остановить вас прямо там..."
http://www.w3.org/TR/html5/forms.html#the-button-element:
4.10.8 Элемент кнопки. Модель контента: содержание фраз, но не должно быть потокового потомка.
--- >
Интерактивный контент - это контент, специально предназначенный для взаимодействия с пользователем. ⇒ a, audio [...]
Итак, если вы пишете недействительный HTML, ожидайте неожиданного поведения; -)
Ответ 4
Вы можете добавить это в элемент кнопки.
OnClick = "window.location.href= '/link1'"
Пример
<button onclick="window.location.href='/login'">Login</button>
Ответ 5
Этот недопустимый HTML,
Сделайте что-то вроде этого:
<ul>
<li><a href="#">Log in</a></li>
<li><a href="#">Sign up</a></li>
</ul>
Ответ 6
Используйте javascript: window.location для кнопки.
<div class="product">
<button onClick="javascript: window.location='/checkout/outfield-
banner/1'">Add to Cart</button>
</div>
Ответ 7
Или вы можете поместить кнопку внутри якоря, у нее не будет такого же взгляда, так как это будут две разные кнопки, но это будет кнопка, которая действует как ссылка. Это еще не технически корректно, но работает в FireFox.
<a href="/login">
<button class="btn login">
<b>Log In</b>
</button>
</a>
<a href="/signup">
<button class="btn login">
<b>Sign Up</b>
</button>
</a>