javascript(BOM常用方法)


title: javascript(BOM常用方法)
date: 2017-06-01 17:29:52
tags: javascript筆記


BOM操作的常用屬性和方法

open():打開一個(gè)新的頁面,格式為open(頁面的url,打開的方式),如果url為空則打開一個(gè)空白頁面。如果打開方式為空,默認(rèn)為新窗口方式打開。這個(gè)方法返回新窗口的window對象。

close():關(guān)閉一個(gè)頁面,但是這個(gè)方法有點(diǎn)兼容性問題,firefox默認(rèn)無法關(guān)閉,chrome默認(rèn)直接關(guān)閉,ie:詢問用戶。

navigator.userAgent:返回瀏覽器的名稱和版本。

location:瀏覽器地址信息,本身不是字符串,是object格式。

location:就是url地址本身。

location.search:url中?后面的內(nèi)容。

location.hash:url中#后面的內(nèi)容。

窗口尺寸與大小

可視區(qū)的尺寸:document.documentElement.clientWidthdocument.documentElement.clientHeight

滾動(dòng)條滾動(dòng)的距離:document.documentElement.scrollTopdocument.documentElement.scrollLeft。在chrome瀏覽器中要使用document.body.scrollTopdocument.body.scrollLeft

元素內(nèi)容的寬高:div.scrollHeightdiv.scrollWidth

文檔的寬高:document.documentElement.offsetHeightdocument.documentElement.offsetWidth。也可以使用document.body.offsetHeightdocument.body.offsetWidth

事件

onscroll:當(dāng)滾動(dòng)條滾動(dòng)的時(shí)候觸發(fā)。

onresize:當(dāng)瀏覽器尺寸改變的時(shí)候觸發(fā)。

onfocus:當(dāng)元素獲取焦點(diǎn)時(shí)觸發(fā)。

onblur:當(dāng)元素失去焦點(diǎn)時(shí)觸發(fā)。

focus():給元素設(shè)置焦點(diǎn)。

blur():讓元素失去焦點(diǎn)。

select():選擇指定元素里面的文本內(nèi)容。只能選擇用戶可以輸入的內(nèi)容。

onmousemove:鼠標(biāo)在一個(gè)元素上移動(dòng)時(shí)觸發(fā)。

onkeydown:當(dāng)鍵盤按鍵按下的時(shí)候觸發(fā)。能夠響應(yīng)用戶輸入的元素才支持鍵盤事件,和焦點(diǎn)事件一樣。如果按下不抬起來會(huì)連續(xù)觸發(fā)。

onkeyup:當(dāng)鍵盤按鍵抬起時(shí)觸發(fā)。

oncontextmenu:當(dāng)右鍵菜單顯示出來時(shí)觸發(fā)。

event事件對象:當(dāng)一個(gè)事件發(fā)生時(shí),這個(gè)對象發(fā)生的這個(gè)事件有關(guān)的一些詳細(xì)的信息都會(huì)臨時(shí)保存到event對象中,以便在需要時(shí)使用。

事件綁定

標(biāo)準(zhǔn)瀏覽器的方法:div.addEventListener(事件名稱,事件處理函數(shù),捕獲/冒泡);。false是冒泡,true是捕獲。

  1. 有捕獲。

  2. 事件名稱沒有on。

  3. this指向調(diào)用該函數(shù)的對象。

  4. 事件執(zhí)行的順序是正序。

非標(biāo)準(zhǔn)瀏覽器方法:div.attachEvent('on'+事件名稱,事件處理函數(shù));

  1. 沒有捕獲。

  2. 事件名稱有on。

  3. this指向window(可以通過call()來解決這個(gè)問題)。

  4. 事件執(zhí)行的順序是倒序。

事件取消

非標(biāo)準(zhǔn)瀏覽器方法:div.dettachEvent('on'+事件名稱,事件處理函數(shù));

標(biāo)準(zhǔn)瀏覽器方法:div.removeEventListener(事件名稱,事件處理函數(shù),捕獲/冒泡)

事件流

事件流和樣式位置沒關(guān)系,和html的結(jié)構(gòu)有關(guān)系

事件冒泡:當(dāng)一個(gè)元素接收到事件的時(shí)候,會(huì)把它接收到的所有事件傳播給它的父級,一直到頂層(window)。父級元素只要有相關(guān)的事件處理函數(shù),那么就會(huì)被執(zhí)行。阻止冒泡設(shè)置事件函數(shù):event.cancelBubble = true;

冒泡最主要的作用是父元素和子元素都需要的事件處理函數(shù),只需要綁定給父元素就可以了,而如果希望只有子元素才執(zhí)行的事件處理函數(shù)可以通過設(shè)置阻止冒泡來接解決。

事件捕獲:捕獲和冒泡相反,是從最外層元素傳播到目標(biāo)元素。其他并沒什么不同。

控制事件是捕獲還是冒泡是由addEventListener中的第三個(gè)參數(shù)決定的,false為冒泡事件監(jiān)控是出去的由內(nèi)向外的,true為捕獲事件監(jiān)控是進(jìn)來的由外向內(nèi)的。

cookie

cookie的作用就是存儲(chǔ)數(shù)據(jù)。長時(shí)間去保存一個(gè)值,比如用戶上次訪問的時(shí)間等。

當(dāng)用戶訪問了某個(gè)網(wǎng)站時(shí)候,可以通過cookie向訪問者的電腦上存儲(chǔ)數(shù)據(jù),每個(gè)瀏覽器存儲(chǔ)的位置不同,所以不同瀏覽器存儲(chǔ)的cookie不能互相通用。

cookie的存儲(chǔ)是以域名的形式區(qū)分的,也就是說每個(gè)網(wǎng)站的cookie文件是不同文件夾存放的,一個(gè)域名下的cookie也可能有多個(gè)文件。所以每個(gè)cookie文件是可以設(shè)置名字的。否則cookie文件會(huì)很大很亂。

document.cookie = 'username=ypj';這就設(shè)置了一個(gè)cookie文件的名字和值。

document.cookie;讀取當(dāng)前網(wǎng)站下的下所有的cookie的內(nèi)容,是字符串格式。

一個(gè)域名下存放cookie的個(gè)數(shù)是有限制的,不同瀏覽器存放的個(gè)數(shù)不同。

每個(gè)cookie存放的內(nèi)容大小也是有限制的,也是根據(jù)瀏覽器不同限制也不同。

默認(rèn)情況下,cookie的周期是整個(gè)瀏覽器結(jié)束進(jìn)程的時(shí)候。

如果想長時(shí)間存放一個(gè)cookie,需要在設(shè)置這個(gè)cookie的時(shí)候同時(shí)給他設(shè)置一個(gè)過期的時(shí)間。當(dāng)過期后cookie就會(huì)被銷毀。

var oDate = new Date();
oDate.setDate(oDate.getDate() + 5);  // 保存5天
document.cookie = 'username=ypj;expires=' + oDate.toGMTString()  // 將oDate又object轉(zhuǎn)為string;

cookie在存儲(chǔ)特殊字符的時(shí)候可能會(huì)出現(xiàn)問題,需要通過encodeURI()編碼來解決。解碼使用decodeURI()方法。參數(shù)都是字符。

用js讀取cookie時(shí)候只能獲取整個(gè)字符串,沒法直接獲取某個(gè)cookie的鍵值,同樣設(shè)置的時(shí)候也不方便,所以可以寫兩個(gè)方法來方便操作。

獲取cookie

function getCookie(key){
    var arr1 = document.cookie.split(';');
    for(var i = 0;i < arr1.length;i++){
        var arr2 = arr1[i].split('=');
        if(arr2[0] == key){
            return decodeURI(arr[1]);
        }
    }
}

設(shè)置cookie

function setCookie(key,value,t){
    var oDate = new Date();
    oDate.setDate(oDate.getDate() + t);
    document.cookie = key + '=' + value + ';expires=' + oDate.toGMTString();
}

刪除cookie

function removeCookie(key){
    setCookie(key,'',-1);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • JavaScript 程序采用了異步事件驅(qū)動(dòng)編程模型。在這種程序設(shè)計(jì)風(fēng)格下,當(dāng)文檔、瀏覽器、元素或與之相關(guān)的對象發(fā)...
    劼哥stone閱讀 1,273評論 3 11
  • JavaScript的組成 JavaScript 由以下三部分組成:ECMAScript(核心):JavaScri...
    紋小艾閱讀 3,318評論 0 3
  • 我們首先要明白,我們給頁面添加效果用到的js到底是什么?js其實(shí)包含三部分:dom 文檔對象模型 bom 瀏覽...
    一直以來都很好閱讀 817評論 0 0
  • 以下文章為轉(zhuǎn)載,對理解JavaScript中的事件處理機(jī)制很有幫助,淺顯易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy閱讀 3,060評論 1 10
  • 有人說這些星座拜金,有些人說,現(xiàn)在找對象都很難,也有人說,對不起,面包我自己有,只要你給我愛情就好了,跟著星座洞君...
    詭魅塔羅館閱讀 220評論 0 0