链接在Firefox中不起作用的按钮内

时间:2013-06-22 17:28:18

标签: javascript html firefox button hyperlink

我在按钮内有两个链接,但链接似乎不适用于Firefox。

<button class="btn login">
    <a href="/login"><b>Log In</b></a> 
          | 
<a href="/signup"><b>Sign Up</b></a>
</button>

我尝试了JavaScript onclick和重定向 - 即使这样也无效。

7 个答案:

答案 0 :(得分:57)

这不起作用,因为it is not allowed by HTML5

  

内容模型:短语内容,但必须没有互动   内容后裔。

Interactive content means any of the following elements

  

音频(如果存在controls属性)按钮详细信息嵌入   iframe img(如果存在usemap属性)输入(如果是类型   属性不在隐藏状态)keygen标签菜单(如果是类型   属性在工具栏状态中)对象(如果usemap属性是   present)选择textarea视频(如果存在controls属性)

如果它在某些浏览器中有效,那只是因为他们正在尝试 使用格式错误的标记,并提供一些类型的有意义的结果。

换句话说:重写你的HTML,这是一团糟。如果您希望链接看起来像是在按钮中,请将它们放在div元素中,并将其设置为一个,而不是滥用语义错误的元素。

答案 1 :(得分:12)

<a> is not allowed inside <button>

  

短语内容,但必须没有互动内容后代。

<a>是互动内容(无论是否显示href,但您的确如此。因此,您不能依赖于将链接作为按钮的子项以及Firefox正在执行的操作是正确的。使用其他元素来包含<a> s

答案 2 :(得分:6)

  

我在按钮内有两个链接但是[...]

“是的,但是让我在那里阻止你......”

http://www.w3.org/TR/html5/forms.html#the-button-element

  

4.10.8按钮元素内容模型:短语内容,但必须没有interactive content后代。

     

---&GT;

     

交互式内容是专门用于用户交互的内容。   ⇒a,音频[...]

因此,如果您编写的是无效的HTML,则会出现意外行为; - )

答案 3 :(得分:4)

您可以在按钮元素中添加它。

的onclick = “window.location.href = '/ LINK1'”

实施例

<button onclick="window.location.href='/login'">Login</button>

答案 4 :(得分:0)

这是无效的HTML,

做这样的事情:

<ul>
    <li><a href="#">Log in</a></li>
    <li><a href="#">Sign up</a></li>
</ul>

答案 5 :(得分:-1)

使用javascript:window.location作为按钮。

<div class="product">
<button onClick="javascript: window.location='/checkout/outfield-
banner/1'">Add to Cart</button>
</div>

答案 6 :(得分:-2)

或者,您可以将按钮放在锚点内,它不会具有完全相同的外观,因为它将是两个不同的按钮,但它将是一个充当链接的按钮。它在技术上仍然不正确但 在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>