在Web应用程序中强制使用javascript?

时间:2011-09-09 04:57:58

标签: javascript

我正在构建一个具有相当多形式的Web应用程序。 html表单使用php生成。

我遇到的一件事是:

我有一个下拉框供用户选择他的国家/地区。一旦他选择了国家/地区,就会呼叫服务器以获取该国家/地区内的状态列表,并将其填入下拉框中。

最初,我认为我可以提供两个选项:

  • 一个增强的jquery版本,其中ajax用于获取状态并在下拉列表中填充它。
  • 如果javascript不可用,整个页面将提交给服务器,然后在下拉列表中重新呈现新状态。

但是,onChange()需要javascript。因此,如果有人在没有启用javascript的情况下访问表单,我们就无法处理第二个选项,因为需要javascript使用onChange()提交表单。

有哪些方法可以解决这个问题?我目前唯一的解决方案就是强制使用javascript。未启用JavaScript的用户将看到一条消息,指出该页面无法正常运行。

有些网站:

  • Hotmail.com - 拒绝显示除“javascript is required message”之外的任何内容
  • Facebook.com - 告诉我们我们应该使用该网站的移动版本。
  • Google地图 - 不起作用。没有消息要说javascript是必需的。
  • Gmail - 回归基本HTML。
  • Google帐户 - 不起作用。没有消息要说javascript是必需的。

是否可以要求用户在网络的当前状态启用javascript(2011年8月)?

刚刚遇到了这个可能的解决方案: http://cita.disability.uiuc.edu/html-best-practices/auto/onchange.php

我可以添加一个用户可以用来选择国家/地区的按钮。这应该允许我们重新加载并呈现状态下拉而没有任何javascript的表单。

5 个答案:

答案 0 :(得分:1)

您可以提供状态下拉菜单,并告知用户如果不适用,请将其留空。如果启用了JavaScript,则可以删除下拉列表,直到选择适用的国家/地区为止。

不,要求JavaScript是不可接受的;例如,许多注重安全的用户使用NoScript,并且不希望将其关闭。

答案 1 :(得分:1)

默认情况下,您应该将所有可能的值加载到第二个下拉列表中,然后使用Javascript在页面加载时清除它们。这样,没有启用Javascript的人仍然可以选择正确的选项。

我保证会为此做好准备,但不管你是否支持JS,都应该是你的电话。如果您认为您的用户群可能有相当大一部分人禁用了JS,那么您应该为他们提供一个有效但不是最佳的网站。如果你认为它们中的大多数将以“正常”(空中引用很重要)浏览器运行,那么你可以考虑放弃对无JS用户的支持。

答案 2 :(得分:1)

我不是专业开发人员,因此请相应地输入。以下是我的观察:

  • 我支持婚礼蛋糕供应商的网站。观察比赛后,所有更具吸引力的网站都会通过幻灯片,下拉菜单,动画,交互式表单验证等方式进行装饰(高雅)。

  • 在寻找将这些功能纳入我们网站的方法时,我发现大多数所有优雅方法都基于javascript。

  • 认为最好将自己呈现为我们的优雅行为(谦虚微笑),我决定要求用户启用javascript。我们已经7年了,我没有收到任何投诉。所有工作都在移动设备上进行。

答案 3 :(得分:0)

折衷选项是从您的状态下拉列表开始,其中包含您的业务所在国家/地区的状态,例如,所有美国州,并提供额外选项(最好位于 top 列表)上写着“其他,非[yourcountrynamehere]”。 “状态”下拉列表旁边有一个文本输入,如果用户不在列表中,则可以键入其状态名称。如果启用了JavaScript,则在文档就绪时,您可以隐藏文本输入并使用Ajax解决方案。如果没有JavaScript,用户就拥有一个甚至不需要重新加载的功能齐全的页面。

答案 4 :(得分:0)

我最终做的是在下拉列表旁边添加一个“选择国家/地区”按钮。没有javascript的用户会看到此按钮。单击它后,页面将重新加载所呈现的状态列表。

对于没有javascript的用户,此按钮被隐藏,选择国家/地区将自动呈现包含相关状态的新下拉列表。