我正在使用隐藏字段'Isjsenabled'来检测客户端的Javascript是启用还是禁用。如果启用了Javascript,则会触发Javascript函数,并将隐藏字段的值设置为1.
我想检查服务器端Page_load的隐藏值。但问题是在页面加载后Javascript被触发。
你有什么建议吗?
Html Part
<script type="text/javascript">
$(function() {
$("#<%= Isjsenabled.ClientID %>").val(1);
});
</script>
<input id="Isjsenabled" runat="server" value ="0" type="hidden" />
部分背后的代码
protected void Page_Load(object sender, EventArgs e) {
HtmlInputHidden hdn = this.FindControl("Isjsenabled") as HtmlInputHidden;
if (hdn != null)
if (hdn.Value != null && hdn.Value == "0")
Helper.SetCookie("IJE", "0");
else
Helper.SetCookie("IJE", "1");
}
答案 0 :(得分:11)
在不考虑你想要进入的方向的情况下,所有名为NOSCRIPT的浏览器都支持一些使用过的标记。
<noscript>
<img src="http://myserver/notify_no_script.aspx" style="display:none">
</noscript>
正如您所看到的,我们的想法是让浏览器请求图片,但前提是禁用了javascript。此页面可以设置一个会话变量,指出当前客户端没有可供当前会话中所有代码使用的脚本功能。
或者,您可以遵循当前的方法:
<noscript>
<input type="hidden" name="noscript" value="1">
</noscript>
<script><!--
document.writeline('<input type="hidden" name="noscript" value="0">');
//--></script>
希望这有帮助,
-Oisin
答案 1 :(得分:3)
你应该将你的脚本或noscript标题作为一个页面绘制到自身上,然后根据javascript被打开,重定向(通过元标记或通过脚本location.href)到你想去的下一个地方。这将需要两个步骤,但它会得到你正在寻找的结果。您可以在重定向查询中将所需信息传回给自己。
答案 2 :(得分:2)
javascript可以自行设置cookie。
var myDate = new Date()
document.cookie = 'IJE=1; expires=' + myDate.toGMTString()
这可以解决您的问题吗?
答案 3 :(得分:1)
Unobtrusive JavaScript可能会引起关注。允许您的页面优雅地降级将简化开发。最初设计没有JavaScript并增强体验。如果您的应用程序非常需要JavaScript并且绝对需要它才能运行,那么这可能不是一个选项。在这种情况下,使用noscript标记通知您的用户他们需要启用JavaScript是一个好主意。
另外,请看x0n的评论。这里有一个参考,以帮助理解HTTP request life cycle。