我想在页面进入后台Page_Load方法前,执行一个JS判断客户端是否开启cookies,于是在head里加了这样一句js
<script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script> <script type="text/javascript"> $().ready(function () { document.getElementById("<%=hidIsEnableCookies.ClientID %>").value = navigator.cookieEnabled; alert(2); }); </script>
就是把是否开启cookies的值给hid控件,然后去Page_Load里取这个控件的值……
可是它每次都先执行Page_Load才去执行js..
有什么办法可以先执行js呢?
IsPostBack前处理,或者是试下注册吧
这是不可能实现的,用ajax加载页面才能实现
换个思路吧,如果不确定是否开了cookie,先跳转到另外一个页面写一个cookie,然后再跳转回来,这时候如果能拿到cookie,就说明可以用,拿不到,那就说明不能用。
直接在$().ready中判断cookie可不可用,不就行了啊
汗,你在page_load里给response.cookie赋值,然后redirect,然后判断request.cookie里有没有值,不就行了。
何需js来做,asp.net 当然内置支持这种检测,浏览器会把自己出卖的。
[C#]
if (Request.Browser.Cookies == true)
{
//...
}
谢谢你的回答,这个是判断浏览器是否支持cookies,不能判断浏览器是否开启cookies。
我把cookies功能禁用后,用这个看到的仍然是True,还有什么更好办法吗?
@hexllo: 那就得用 Rainier-Soft.Com说的方法了,一个专门判断具有检测cookie功能的页面,全局标志该客户是否已启用,是否已检测过cookie的标志。比如首次访问,则先看是否支持,是否已检测,如果没有检测,则跳到检测页面,检测页面具备判断功能和跳转回原来页面的功能,这些过程应该都很快,基本看不到页面的切换。
page_load是服务器语言,js是前台语言,可以完全的分离开来一点联系都没有,你为嘛要先执行js