【问题标题】:Problem in No script tag无脚本标签中的问题
【发布时间】:2010-09-04 11:24:31
【问题描述】:

我没有在我的母版页上放置任何脚本标记,如果用户没有启用 javascript 或其浏览器不支持 javascript,它会重定向到特定视图。我正在使用此代码

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

但问题是每次我打开页面时它都会重定向我,尽管我的 javascript 已启用。我使用 asp.net mvc2 可能是什么问题,或者有没有其他方法可以做到这一点?

【问题讨论】:

    标签: javascript asp.net-mvc noscript


    【解决方案1】:

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

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

    【讨论】:

    • +1 为简洁起见。我要补充一点,基于 js 的重定向到主站点也是一种可能,虽然有点 hack...
    【解决方案2】:

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


    编辑

    更好地解释:服务器只是创建一个字符串(HTML)并将其发送到浏览器。它不会解析浏览器是否支持脚本。


    编辑 2

    您可以使用meta refresh 标签。见:

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

    我在 Firefox 中进行了测试并且可以工作。

    【讨论】:

    • 你不能这样做 - “但是,你不能在 head 中使用 noscript 来提供 JavaScript 函数的替代方案,因为这会涉及在 head 元素中写入内容。” - reference.sitepoint.com/html/noscript
    • @Jiang 对不起,但我现在测试并且工作正常。至少在Firefox中。它不是 W3C 兼容的,但可以工作。 :)
    • 好吧,我会把我的话改成“你不应该那样做”;)
    猜你喜欢
    • 1970-01-01
    • 2019-02-08
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多