1

我正在做一个选择框导航器,想知道是否最好进行 javascript 重定向或提交表单并从那里重定向。各有优劣?

4

3 回答 3

2

如果您的意思是通过选择列表项目进行导航,您可以同时执行以下操作:

  • 使用 GET 配置表单,直接指向目标页面。
  • 如果支持js,则在选择值时调用“提交”。如果不支持 js,应该显示一个选择/开始/打开按钮,允许用户仍然使用应用程序

注意:上面的方法直接进入目标页面。这与从服务器发送重定向不同,后者会导致处理额外的请求,增加操作的额外延迟和服务器处理的更多请求。这是一个导航场景,不需要为此进入服务器端(至少在没有其他特定要求的情况下不需要)。

于 2009-03-19T06:22:50.557 回答
2

HTTP 重定向:

  • 优点:您可以记录用户的活动。
  • 缺点:一个额外的周转周期,直到用户被有效重定向。

JavaScript 重定向:

  • 优点:用户立即被重定向
  • 缺点:您无法记录用户的活动,除非您使用 AJAX;如果用户禁用了 JavaScript,他将不会被重定向。

在这种情况下,我倾向于使用Unobtrusive JavaScript来解决这个问题:代码好像没有启用 JavaScript(即发布表单的“Go”按钮);然后,在页面加载后,Javascript 将隐藏该按钮,将更改功能添加到选择框并发送 AJAX 请求以记录活动。

这样你就可以两全其美了:)

于 2009-03-19T12:54:21.163 回答
1

做这样的事情时要小心:

<select id="test" onchange="doAction();">
  <option value='http://...'>...</option>
  <option value='http://...'>...</option>
  <option value='http://...'>...</option>
  <option value='http://...'>...</option>
</select>

<script type="text/javascript">
function doACtion() {
    window.location = document.getElementById('test');
}
</script>

这具有非常差的可访问性,因为 IE 用户尝试使用键盘导航选择会无意中触发该操作。这对于残障用户来说尤其麻烦,就像您尝试重定向他们一样,他们根本无法访问除第一个选项之外的任何内容。

于 2009-03-19T17:28:04.350 回答