【經常使用BOM對象】html
- navigator:保存瀏覽器配置信息的對象;瀏覽器
-- cookieEnabled:判斷當前瀏覽器是否啓用cookie;(6.html)服務器
cookie:是用戶在客戶端存儲數據的文件;window.navigator.cookieEnabled;cookie
清除cookie,函數
-- plugins: 保存全部插件對象的集合this
-- userAgent: 保存了瀏覽器名稱,版本號的字符串url
- history:window保存當前窗體訪問過的url的歷史記錄棧;(2_1.html)插件
history.go(1):前進一次;htm
history.go(-1):後退一次;對象
history.go(0):刷新當前頁;
- location:當前窗口正在訪問的url地址對象;
location.search 獲取url裏查詢字符串(?以後部分);先用「&」分割,再用「=」分割;
location.replace("新url") 在當前窗口打開新鏈接,不可後退;
使用location打開新鏈接:在當前窗口:
- location.href="新url"; 可後退;
- location.assign("新url"); 可後退;
- location.reload(); reload當前頁面,刷新;有修改就去服務器找,
- screen:當前屏幕的顯示信息;
screen.Height/Width:完整屏幕寬高;
availHeight/availWidth: 去掉任務欄屏幕寬高
win7下相同;
request
response
【事件】
瀏覽器自動觸發的或用戶手動觸發的對象狀態的改變;
DOM Leve12 Event標準;IE8自成體系;
時間處理函數:當事件觸發時,自動執行的函數;
1.事件定義:3種;
html: <div onXX="fun()"></div>
div.onclick=function(){
eval("fun()");
}
強調:fun()中this是window;
若是得到當前目標對象:
html:onXX="fun(this)"
js: fun(elem){};
js: elem.onXX=函數對象;
一個元素的一個時間處理函數,只能綁定一個函數對象;
DOM標準:elem.addEventlisterner("事件名","函數對象",是否捕獲階段觸發);
一個元素的一個時間處理函數,能綁定多個函數對象;
IE8: elem.attachEvent("on事件名","函數對象")
IE8的事件週期:沒有捕獲;
2.事件週期:瀏覽器捕獲到事件觸發後,一直到最後一個事件觸發完所經歷的過程;
DOM標準:3階段;
- (由外向內)捕獲;從最外層html元素開始,向內逐層「記錄」每層元素綁定的事件處理函數;到目標元素爲止;
- 目標觸發;自動執行目標元素上綁定的事件處理函數;
- (由內向外)事件冒泡;從目標元素的父元素開始「逐層」向上執行每層的事件處理函數;到最外層html結束;
3.event對象:當事件發生時,自動建立,封裝了事件信息;
1.得到event對象:
- html: <div onXX="fun(event)"></div>
實際調用時,event會自動得到當前時間對象;
js: fun(e){};
沒有兼容問題;
- js:elem.onXX=函數對象;
function(){
DOM標準:自動建立event對象,默認是arguments第0個;
IE:window全局的event屬性;當事件發生時,自動建立event對象,保存在window.event中;
}
2.event對象包含:
- 目標元素對象:var src=e.srcElement||e.target;
3.取消 / 利用冒泡
- 取消冒泡:
if(e.stopPropagation){
e.stopPropagation();
}else{
e.cancleBubble=true;
};
通常放在事件結尾取消冒泡;
- 利用冒泡:若是多個子元素中定義了相同的事件處理函數,在父元素上定義一次便可;
- 事件委託;
4.取消事件;表單提交前若是驗證未經過,若是驗證,取消提交事件;
if(e.preventDefault){
e.preventDefault() //DOM
}else{
e.returnValue=false //IE8
}
事件座標:3種座標系
1. 相對於顯示器:
最大值: screen.availHeight/availWidth
鼠標位置: e.screenX/Y
2. 相對於文檔顯示區
最大值:window.innerHeight/Width
鼠標位置:e.clientX/x; e.clientY/y
3. 相對於父元素左上角
最大值:父元素的寬和高
鼠標位置:e.offsetX/Y