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

Javascript重定向或表单提交更好?,javascript,html,redirect,submit,Javascript,Html,Redirect,Submit,我正在做一个选择框导航器,想知道是否最好做一个javascript重定向,或者提交一个表单并从那里重定向。每种方法的优缺点?如果您的意思是通过选择列表中的一项来导航,那么您可以同时执行以下两种操作: 使用直接指向目标页面的GET配置表单 如果支持js,请在选择值时调用“提交”。如果不支持js,则应显示一个select/go/open按钮,允许用户仍然使用该应用程序 注意:上述方法直接进入目标页面。这与从服务器发送重定向不同,后者会导致需要处理的额外请求,增加操作的额外延迟,并增加服务器需要处

我正在做一个选择框导航器,想知道是否最好做一个javascript重定向,或者提交一个表单并从那里重定向。每种方法的优缺点?

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

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

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

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

  • 使用直接指向目标页面的GET配置表单
  • 如果支持js,请在选择值时调用“提交”。如果不支持js,则应显示一个select/go/open按钮,允许用户仍然使用该应用程序
注意:上述方法直接进入目标页面。这与从服务器发送重定向不同,后者会导致需要处理的额外请求,增加操作的额外延迟,并增加服务器需要处理的请求。这是一个导航场景,不需要在服务器端执行此操作(至少没有其他特定要求)。

HTTP重定向:

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

  • 优点:用户立即被重定向
  • 缺点:除非使用AJAX,否则无法记录用户的活动;若用户禁用了JavaScript,他将不会被重定向
在这种情况下,我倾向于使用来解决这个问题:代码就像没有启用JavaScript一样(即一个发布表单的“Go”按钮);然后,页面加载后,Javascript将隐藏该按钮,向选择框添加更改功能,并发送AJAX请求以记录活动

这样,您就可以充分利用这两个世界:)

HTTP重定向:

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

  • 优点:用户立即被重定向
  • 缺点:除非使用AJAX,否则无法记录用户的活动;若用户禁用了JavaScript,他将不会被重定向
在这种情况下,我倾向于使用来解决这个问题:代码就像没有启用JavaScript一样(即一个发布表单的“Go”按钮);然后,页面加载后,Javascript将隐藏该按钮,向选择框添加更改功能,并发送AJAX请求以记录活动


这样你就可以充分利用这两个世界:)

做这样的事情时要小心:

<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>

...
...
...
...
函数doACtion(){
window.location=document.getElementById('test');
}

这具有非常差的可访问性,因为IE用户试图用键盘导航select将在无意中触发该操作。这对残疾用户来说尤其麻烦,因为如果您试图重定向他们,他们将无法访问除第一个选项以外的任何内容。

在执行类似操作时要小心:

<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>

...
...
...
...
函数doACtion(){
window.location=document.getElementById('test');
}

这具有非常差的可访问性,因为IE用户试图用键盘导航select将在无意中触发该操作。这对残疾用户来说尤其麻烦,因为如果您试图重定向他们,他们将无法访问除第一个选项以外的任何内容。

+1现在没有一个名称来命名回退到无js方法(我想我应该有:p)。。。这就是说,将表单设置为使用get和go直接进入页面更好:)+1现在还没有一个名称来表示无js方法(我想我应该有:P)。。。也就是说,将表单设置为使用get并直接转到页面更好:)