Javascript重定向或表单提交更好?
我正在做一个选择框导航器,想知道是否最好做一个javascript重定向,或者提交一个表单并从那里重定向。每种方法的优缺点?如果您的意思是通过选择列表中的一项来导航,那么您可以同时执行以下两种操作:Javascript重定向或表单提交更好?,javascript,html,redirect,submit,Javascript,Html,Redirect,Submit,我正在做一个选择框导航器,想知道是否最好做一个javascript重定向,或者提交一个表单并从那里重定向。每种方法的优缺点?如果您的意思是通过选择列表中的一项来导航,那么您可以同时执行以下两种操作: 使用直接指向目标页面的GET配置表单 如果支持js,请在选择值时调用“提交”。如果不支持js,则应显示一个select/go/open按钮,允许用户仍然使用该应用程序 注意:上述方法直接进入目标页面。这与从服务器发送重定向不同,后者会导致需要处理的额外请求,增加操作的额外延迟,并增加服务器需要处
- 使用直接指向目标页面的GET配置表单
- 如果支持js,请在选择值时调用“提交”。如果不支持js,则应显示一个select/go/open按钮,允许用户仍然使用该应用程序
注意:上述方法直接进入目标页面。这与从服务器发送重定向不同,后者会导致需要处理的额外请求,增加操作的额外延迟,并增加服务器需要处理的请求。这是一个导航场景,不需要在服务器端执行此操作(至少没有额外的特定要求)。如果您的意思是通过选择列表中的一项进行导航,则可以同时执行以下两种操作:
- 使用直接指向目标页面的GET配置表单
- 如果支持js,请在选择值时调用“提交”。如果不支持js,则应显示一个select/go/open按钮,允许用户仍然使用该应用程序
- 优点:您可以记录用户的活动
- 缺点:一个额外的周转周期,直到用户得到有效的重定向
- 优点:用户立即被重定向
- 缺点:除非使用AJAX,否则无法记录用户的活动;若用户禁用了JavaScript,他将不会被重定向
- 优点:您可以记录用户的活动
- 缺点:一个额外的周转周期,直到用户得到有效的重定向
- 优点:用户立即被重定向
- 缺点:除非使用AJAX,否则无法记录用户的活动;若用户禁用了JavaScript,他将不会被重定向
这样你就可以充分利用这两个世界:)做这样的事情时要小心:
<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并直接转到页面更好:)