javascript

来源:互联网 发布:js判断非负整数 编辑:程序博客网 时间:2024/06/06 20:09

onload的意思是当页面加载完毕的时候执行

onunload:在关闭/刷新页面后触发。

onbeforeunload:在关闭/刷新页面时触发。

 

Onunload与Onbeforeunload

相同点:Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或者在<body>里指定。

区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。

Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是无法阻止页面的更新和关闭的。而Onbeforeunload 可以做到。

 

window.onbeforeunload = function() {  

      var n =window.event.screenX - window.screenLeft;  

      var b = n> document.documentElement.scrollWidth-20;  

      if(b&& window.event.clientY < 0 || window.event.altKey)   {  

            alert("是关闭而非刷新");  

            window.event.returnValue = ""; //这里可以放置你想做的操作代码  

      }  

}

window.event.clientX和window.event.clientY 将捕捉当前事件发生时鼠标相对与窗口的桌面坐标,通常情况下IE的关闭按钮都会在页面的右上部分,所以点关闭的时候鼠标的坐标的Y坐标一定是小于0的

 

if (document.all){

window.attachEvent('onload',函数名)//IE中

}else{

window.addEventListener('load',函数名,false);//firefox

}

 

在服务器端判断http请求是否通过AJAX发送过来的

The X-Requested-With is a non-standard HTTP header whichis mainly used to identify Ajax requests. Most JavaScript frameworks send thisheader with value of XMLHttpRequest.

xmlReq.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlReq.setRequestHeader("X-Requested-With","XMLHttpRequest")

xmlReq.open("POST", url  );

xmlReq.onreadystatechange = successResponse;       

xmlReq.send(paramsSend);

 

public static boolean isAjax(ServletRequest request) {

  if (requestinstanceof HttpServletRequest) {

   HttpServletRequest hRequest = (HttpServletRequest)request;

    return"XMLHttpRequest".equals(hRequest.getHeader("X-Requested-With"));

  }

  return false;

}

JavaScript 是弱类型语言,这就意味着,等于操作符会为了比较两个值而进行强 制类型转换。注意0的相等运算,例如:

""          ==   "0"           // false 

0            ==   ""            // true 

0           ==   "0"           // true 

false       ==   "false"       // false 

false       ==   "0"           // true 

false       ==   undefined     // false 

false       ==   null          // false 

null         ==   undefined    // true 

" \t\r\n"   ==   0             // true 

 

而恒等于不像普通的等于操作符,不会进行强制类型转换

""          ===   "0"           // false 

0           ===   ""            // false 

0           ===   "0"           // false 

false       ===   "false"       // false 

false       ===   "0"           // false 

false       ===   undefined     // false 

false       ===   null          // false 

null        ===   undefined     // false 

" \t\r\n"   ===   0             // false

 

而对于对象,当用恒等于的时候,用于判断是否是同一个对象而不是单纯的判断值是否相等。所以,以后要注意了。判断的时候尽量还是使用恒等于, 这样不用进行强制转换比较