<button> 在 chrome 中工作,但在 Firefox 中不工作 - 为啥?

Posted

技术标签:

【中文标题】<button> 在 chrome 中工作,但在 Firefox 中不工作 - 为啥?【英文标题】:<button> working in chrome but not in Firefox - why?<button> 在 chrome 中工作,但在 Firefox 中不工作 - 为什么? 【发布时间】:2014-11-30 13:24:20 【问题描述】:

我的 html 页面上有几个按钮,如下所示:

<button type="button" class="read-more"><a href="#">Read More</a></button>

它们在 chrome 和 Safari 中反应灵敏——它们工作得非常好。然而,当我在 mozzilla Firefox 中测试它们时,它们根本没有响应。有谁知道可能是什么问题?

我试着这样做:

<a href="#"> <button type="button" class="read-more">Read more</button></a>

这链接了按钮,但它不显示可点击的光标并且不拾取一些 css(例如下划线和字体颜色)

【问题讨论】:

您的 html 无效,但是如果您真的想使用该按钮,您可以做一个时髦的解决方法&lt;form action="REDIRECTURLHERE"&gt;&lt;input type="submit" value="read-more"&gt;&lt;/form&gt; 这适用于所有浏览器还是单独使用没有按钮的锚会更好? 是的,因为它只是一个表单完成后重定向的表单(按钮单击)编辑:我认为锚标签仍然会更好,但是如果你不想自定义您的按钮,我猜这将是实现它的一种方式。 【参考方案1】:

您的 HTML 无效。使用a validator。按钮不能包含锚点,锚点不能包含按钮。不同的浏览器以不同的方式从该错误中恢复。

如果您想在某处链接,请使用锚点。 如果您想提交一个表单,或者拥有一个只运行一些 javascript 的控件,请使用按钮。

然后应用 CSS 让它看起来像你想要的那样。

【讨论】:

能否请您举个例子说明在这种情况下如何使用锚点? &lt;a href="full-version-of-article.html"&gt;Read more&lt;/a&gt;.【参考方案2】:

正如 Quentin 所说,您的 HTML 无效。如果您真的想使用默认按钮作为重定向,您可以创建如下解决方法:

&lt;form action="REDIRECTURLHERE"&gt;&lt;input type="submit" value="BUTTON TEXT"&gt;&lt;/form&gt;

REDIRECTURLHERE 是放置目标 URL 的位置,BUTTON TEXT 是输入按钮文本的位置。

【讨论】:

【参考方案3】:

您使用 Button 和 Anchor 标签的方式有点无效。

您可以使用 ANCHOR 标记进行重定向,也可以使用以下输入按钮。单击此按钮时,将不会提交表单:

<input type="button" value="Read More" class="read-more" />

如果要提交表单,则必须使用提交输入类型。

【讨论】:

【参考方案4】:

我也遇到了按钮在 chrome 中工作正常但在 Mozilla fire fox 中无法正常工作的问题。我对代码进行了以下更改,然后它在两个浏览器中都可以正常工作。

旧代码:

  <input type="search" name="focus" class="form-control search-box" placeholder="Messages.Label.search" style="width:100%"
           ng-model="dashboardCtrl.searchvalue" ng-change="dashboardCtrl.searchChangeHandler()" required >
    <button class="close-icon" type="reset" ng-click="dashboardCtrl.removeSearchTab()"></button>
    <img ng-src="/assets/images/search-icon.svg"  style="position:relative;left: 90%;top: -30px"  ng-show="dashboardCtrl.searchvalue === undefined"/>

新代码: 我将上面的按钮更改为 div 和 css 保持与下面相同。

.search-box,.close-icon 
   position: relative;

.search-box 
   border: 1px solid $color_nobel_approx;
   outline: 0;
   border-radius: 0px;
   padding-right:22px;
   margin-top: 3px;
   width: 190px;
   box-sizing: border-box;
  -webkit-transition: width 0.4s ease-in-out;
   transition: width 0.4s ease-in-out;
 
 .search-box:focus 
    box-shadow: 0 0 2px 2px $color_azure_radiance_approx;
    border: 1px solid #bebede;
    width: 100%;
 
 .close-icon 
   border:1px solid transparent;
   background-color: transparent;
   display: block;
   outline: 0;
   cursor: pointer;
   right: -94%;
   top: 2px;
   height: 0px;
 
.close-icon:after 
  content: "X";
  display: block;
  width: 20px;
  height: 20px;
  position: absolute;
  z-index:1;
  right: 5px;
  top: -30px;
  margin: auto;
  padding: 2px;
  text-align: center;
  color: black;
  font-weight: bold;
  font-size: 12px;
  cursor: pointer;

.search-box:not(:valid) ~ .close-icon 
  display: none;

【讨论】:

以上是关于<button> 在 chrome 中工作,但在 Firefox 中不工作 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章

当可见性发生变化时,IFrame滚动条会在Chrome上消失

卧槽,Chrome 89 更新事件触发顺序,导致99%的文章都错了(包括MDN)

通过 chrome 扩展访问 DOM 元素

ng-disabled 在 chrome 中不起作用。Button 没有在 Angular 中禁用

为啥 <button> 标签对待 em 的方式与 <div> 不同?

为啥动画内容在 Firefox 中不起作用?