按钮vs链接vs输入类型="提交"在表单上

nig*_*der 7 html javascript forms button hyperlink

用户登录到他的控制面板并查看他的传入消息.在每条消息附近都有一个"回复"按钮.实现该按钮的正确方法是什么?

我看到三个主要选择:

  1. 使用链接:

    <a href="customer.php?reply&messageid=1234">Reply</a>.
    
    Run Code Online (Sandbox Code Playgroud)

    坏处:

    • 我们需要将该链接设置为看起来像一个按钮.因为我认为动作"回复"应该用按钮来表示,而不是链接(在我看来,当链接到某些资源时以及当我们在链接文本中有名词时,应该使用链接;如果我们想要做出动作并且在标题中有动词(动作) - 应该使用按钮).

  1. 使用按钮:

    <button onclick="location.href='customer.php?reply&messageid=1234'">Reply</button>`  
    
    Run Code Online (Sandbox Code Playgroud)

    坏处:

    • 用户必须启用JavaScript.虽然根据我们的统计数据,99.8%的用户启用了JavaScript,如果他们不这样做,他们仍然很难在我们的网站上工作(我们有很多用JavaScript实现的功能).所以我认为100%的实际活跃用户都启用了JavaScript.

  1. 使用表格<input type="submit">:

    <form action="customer.php?reply" method="get">
      <input name="messageid" type="hidden" value="1234" />
      <input type="submit" value="Reply" />
    </form>
    
    Run Code Online (Sandbox Code Playgroud)

    坏处:

    • 我认为在这里使用表格是"人为的".用户不输入任何内容.我们使用表单只是为了使我们的按钮工作.我还认为,当我们不更改任何内容并且只需要向用户显示回复表单时使用POST请求 - 违反了REST原则.但即使使用GET,我仍然认为在这种情况下使用表单是人为的.

其他一些说明:

  • 使用链接内的按钮在IE中不起作用.
  • 这是我们网站的一个私人部分,所以搜索引擎看不到它,我们真的不需要一个链接来帮助搜索引擎跟踪它并索引资源(这是在网络中使用链接而不是按钮的常用参数)

你会选择哪一个?为什么?

UPD.好吧,我决定使用一个链接.谢谢大家的讨论!

Jos*_*ber 9

我肯定会使用链接:渐进增强.

您希望即使Javascript关闭也可以使用该按钮(请记住:在页面加载期间,每个用户都是非JavaScript用户.如果他们处于慢速连接(例如移动),他们应该能够他们看到按钮后立即回复).

样式是一个非问题(你不会使用默认的按钮样式,是吗?).

当用户没有提交任何东西时使用POST确定是错误的.即使使用GET,它仍然不是真正的材料......