2010-09-04 47 views
2

我没有在我的母版页上放置脚本标记,如果用户没有启用javascript或其浏览器不支持javascript它重定向到一个特定的视图。即时通讯使用此代码没有脚本标记问题

<noscript>  
    <% Response.Redirect("../UserLogin/Error"); %> 
</noscript> 

但问题是它的重定向我每次打开页面,虽然我的JavaScript已启用。即时通讯使用asp.net mvc2可能是什么问题或者是否有任何其他方式来做到这一点?

回答

1

标记noscript在客户端(浏览器)中进行评估。服务器不知道客户端是否具有脚本支持,所以每次重定向。


编辑

更好地解释:服务器仅仅是创建一个字符串(HTML),并将其发送给浏览器。它不会分析查看浏览器是否具有脚本支持。


EDIT 2

可以使用meta refresh标签。请参阅:

<head> 
    <noscript> 
    <meta http-equiv="refresh" content="0;url=http://example.com/" /> 
    <!-- Redirect to http://example.com/ immediately --> 
    </noscript> 
</head> 

我在Firefox中测试和工作。

+0

你不能这么做 - “但是,你不能在头部使用'noscript' '为JavaScript函数提供替代品,因为这将涉及在head元素中写入内容。“ - http://reference.sitepoint.com/html/noscript – 2010-09-04 11:41:30

+0

@Jiang对不起,但我现在测试和工作。至少在Firefox中。这不是W3C的compilant,但工作。 :) – Topera 2010-09-04 11:43:53

+0

那么,我会改变我的话,“你*不应该*那样做”,然后;);) – 2010-09-04 11:50:54

3

Response.Redirect在服务器端执行,它会发送一个302状态码给浏览器,它会自动重定向。您可能想要:

<noscript>  
    Please enable javascript to use this site. 
</noscript> 
+1

+1为简洁起见。我会补充说,一个基于js的重定向到主站点也是一种可能性,虽然有点破解... – Aatch 2010-09-04 11:57:36