更好的Javascript重定向或表单提交?

时间:2009-03-19 06:12:10

标签: javascript html redirect submit

我正在做一个选择框导航器,想知道是否更好地进行javascript重定向或提交表单并从那里重定向。每个人的利弊?

3 个答案:

答案 0 :(得分:2)

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

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

注意:上述方法直接进入目标网页。这与从服务器发送重定向不同,后者会产生额外的处理请求,会给操作增加额外的延迟,并且会有更多的请求由服务器处理。这是一个导航场景,没有必要为此服务器端(至少没有其他特定要求)。

答案 1 :(得分:2)

HTTP重定向:

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

JavaScript重定向:

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

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

通过这种方式,你可以获得两个世界中最好的一面:)

答案 2 :(得分: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用户尝试使用键盘导航选择将无意中触发操作,因此可访问性非常差。这对于残疾用户来说尤其麻烦,就好像你试图重定向他们一样,他们根本无法访问除第一个选项之外的其他任何内容。