我正在做一个选择框导航器,想知道是否最好进行 javascript 重定向或提交表单并从那里重定向。各有优劣?
SeanDowney
问问题
3221 次
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 回答