【问题标题】:html form submit using javascript vs submit buttonhtml表单提交使用javascript vs提交按钮
【发布时间】:2013-04-09 16:04:38
【问题描述】:

为了一些说服力,我有时会使用 javascript 提交 HTML 表单。我想知道与使用提交按钮使用经典表单提交相比,这种方法有什么缺点

【问题讨论】:

    标签: javascript forms submit


    【解决方案1】:

    使用纯 HTML 更好,原因有很多:

    • 如果您的用户没有启用 JavaScript,或者您的代码中有 JavaScript 错误,您的表单仍然有效。
    • 纯 HTML 表单更容易编写,更难搞砸
    • 实际按钮在语义上比为您提交表单的魔术链接或 div 更好。这有助于标签排序、操作系统集成、屏幕阅读器等方面的工作,并且对于在您之后处理代码的程序员来说更清晰。
    • 浏览器已经有经过实战测试的代码来提交表单。你为什么要无缘无故地重写那段代码?这会增加风险、复杂性和时间。
    • 不编写 JavaScript 代码意味着您有更多时间做其他事情,例如不再编写代码。

    如果某些东西已经存在并且适用于您的用例,请不要重新发明轮子!

    【讨论】:

    • 不错的答案,除了禁用 Javascript 的浏览器的注意事项,真的吗?
    • 嗯,这是需要考虑的事情。我知道有些人在所有网站上都运行 NoScript,只将他们信任的 JavaScript 网站列入白名单。其他时候,我被困在没有 X 的终端中,而我唯一的浏览器是 lynx - 没有 JavaScript。考虑像 Steam 中的嵌入式浏览器、一些音乐播放器(显示有关艺术家的 last.fm/wikipedia 页面)和其他类似实体。为了简单起见,这些可能会禁用 JavaScript——甚至不实现它。当您可以合理且轻松地摆脱 JavaScript 时,不依赖 JavaScript 是明智的。
    • 感谢您的解释
    【解决方案2】:

    我能想到的唯一缺点是,如果您需要重新加载页面,因为您正在与每次重新生成 HTML 的旧站点集成......但是如果您正在构建一个新系统,或者它已经这样做了那,在我看来它更好。节省带宽、计算时间、重新渲染时间等。 如果您只是在谈论提交 HTML 表单,那真的没有区别。

    【讨论】:

      【解决方案3】:

      不,真的没有缺点。您可能有更多的代码,而不是仅仅将所有内容包装在一个表单中并提交按钮,但您当然仍然可以利用 https 以及这些天网络可能提供的所有其他内容。

      【讨论】:

      • 谢谢。您能阐明 HTTPS 的优势吗?这是提交按钮还是 javascript 的优势?
      • 无需说明,无论哪种方式都可以使用 https
      【解决方案4】:

      最大的缺点是无法为禁用 Javascript 的访问者提供功能。您可以通过在禁用 javascript 时提供不同的页面来重定向到同时支持两者。

      以下是用于检测和响应禁用 javascript 的方法列表:

      1. <noscript>The HTML noscript tag.
      2. Using jQuery or Javascript to set a cookie
      3. 使用 Javascript 使用 CSS 隐藏区域。

      【讨论】:

      • 我很惊讶听到支持禁用 Javascript 的浏览器。在 2013 年花点时间思考这件事真是浪费时间。
      【解决方案5】:

      就个人而言,我不喜欢 HTML 表单。 HTML 是一种布局语言,在这方面很差。保持布局和功能分离是面向对象编程的核心原则。您是否将 HTML 和 JavaScript 视为以这种方式表示这些功能可能是个人选择。你可以说 CSS 是布局。

      如果您正在编写一个简单的页面,几乎没有其他内容,那么使用 HTML 表单不是一个坏主意。

      如果您打算编写一个具有许多不错功能的大型应用程序,那么至少对我而言,将它放在一个地方是有意义的。

      如果您开始引入 JSON 或任何类型的客户端/服务器关系,而不是“这是我的文本或下拉选择”,那么请采用程序员的方法,而不是网页设计师。 JavaScript 为您提供了更多的灵活性。您可以在页面上不发生任何事情的情况下与服务器聊天。

      如果你使用像 jQuery 这样的库,编码开销非常小。

      【讨论】:

        猜你喜欢
        • 2016-12-04
        • 1970-01-01
        • 2010-10-11
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 2017-08-21
        相关资源
        最近更新 更多