初學者web前端學習筆記

 

1.if條件語句相關

對於 if 語句括號裏的表達式,ECMAScript 會自動調用 Boolean()轉型函數將這個表達式的結果轉換成一個布爾值。若是值爲 true,執行後面的一條語句,不然不執行。css

2.arguments相關

經過arguments 對象的length屬性,來智能的判斷有多少參數,而後把參數進行合理的應用 。
好比,要實現一個加法運算,將全部傳進來的數字累加,而數字的個數又不肯定。前端

function box() {
sum0        var=;
iflength0returnsum//若是沒有參數,退出       (arguments.==);
for0length//若是有,就累加       (var i =;i < arguments.; i++) {
sumsum           =+ arguments[i];
        }
returnsum//返回累加結果       ;
    }
5912    alert(box(,,));

3.函數內部屬性

函數內部,有兩個特殊的對象:arguments 和 this。arguments 是一個類數組對象,包含着傳入函數中的全部參數,主要用途是保存函數參數。但這個對象還有一個名叫 callee 的屬性,該屬性是一個指針,指向擁有這個 arguments 對象的函數。
對於階乘函數通常要用到遞歸算法,因此函數內部必定會調用自身;若是函數名不改變是沒有問題的,但一旦改變函數名,內部的自身調用須要逐一修改。爲了解決這個問題,咱們可使用 arguments.callee 來代替。jquery

numfunction box() {
ifnum1       (<=) {
return1           ;
else        }{
returnnumnum-1//使用 callee 來執行自身         }           * arguments.callee();
    }

4.event對象

直接接收 event 對象,是 W3C 的作法,IE 不支持,IE 本身定義了一個 event 對象,直接在 window.event 獲取便可。web

function (evt) input.onclick ={
varwindow//實現跨瀏覽器兼容獲取 event 對象   e = evt ||.event;
    alert(e);
};

5.事件的目標

W3C 中的 target 和 IE 中的 srcElement,都表示事件的目標。算法

function getTarget(evt) {
varwindow   e = evt ||.event;
return//兼容獲得事件目標 DOM 對象   e.target || e.srcElement;
documentfunction (evt) }.onclick ={
var   target = getTarget(evt);
    alert(target);
};

6.阻止事件冒泡

在阻止冒泡的過程當中,W3C 和 IE 採用的不一樣的方法,那麼咱們必須作一下兼容。chrome

function stopPro(evt) {
varwindow   e = evt ||.event;
windowtrue   .event ? e.cancelBubble =: e.stopPropagation();
}

7.阻止事件默認行爲

function preDef(evt) {
varwindow   e = evt ||.event;
if   (e.preventDefault) {
        e.preventDefault();
else    }{
false        e.returnValue =;
    }
}

8.上下文菜單事件:contextmenu

當咱們右擊網頁的時候,會自動出現 windows 自帶的菜單。那麼咱們可使用 contextmenu 事件來修改咱們指定的菜單,但前提是把右擊的默認行爲取消掉。windows

function addEvent(obj, type, fn) //添加事件兼容{
if   (obj.addEventListener) {
type        obj.addEventListener(, fn);
elseif    }(obj.attachEvent) {
'on'type        obj.attachEvent(+, fn);
    }
function removeEvent(obj, type, fn) //移除事件兼容}{
if   (obj.removeEventListener) {
type    ob    j.removeEventListener(, fn);
elseif    }(obj.detachEvent) {
'on'type        obj.detachEvent(+, fn);
    }
}
 
 
window'load'function () addEvent(,,{
vardocument'text'   text =.getElementById();
'contextmenu'function (evt)     addEvent(text,,{
varwindow       e = evt ||.event;
        preDef(e);
vardocument'menu'       menu =.getElementById();
'px'        menu.style.left = e.clientX +;
'px'        menu.style.top = e.clientY +;
'visible'        menu.style.visibility =;
document'click'function ()         addEvent(,,{
document'myMenu''hidden'           .getElementById().style.visibility =;
        });
    });
});

9.js中的文檔模式-document.compatMode

文檔模式在開發中貌似不多用到,最多見的是就是在獲取頁面寬高的時候,好比文檔寬高,可見區域寬高等。數組

IE對盒模型的渲染在 Standards Mode和Quirks Mode是有很大差異的,在Standards Mode下對於盒模型的解釋和其餘的標準瀏覽器是同樣,但在Quirks Mode模式下則有很大差異,而在不聲明Doctype的狀況下,IE默認又是Quirks Mode。因此爲兼容性考慮,咱們可能須要獲取當前的文檔渲染方式。瀏覽器

document.compatMode正好派上用場,它有兩種可能的返回值:BackCompatCSS1Compat
BackCompat:標準兼容模式關閉。瀏覽器客戶區寬度是document.body.clientWidth;
CSS1Compat:標準兼容模式開啓。 瀏覽器客戶區寬度是document.documentElement.clientWidth
例如:app

function getViewport(){
ifdocument"BackCompat"    (.compatMode ==){
return      {
widthdocument        :.body.clientWidth,
heightdocument        :.body.clientHeight
      }
else    }{
return      {
widthdocument        :.documentElement.clientWidth,
heightdocument        :.documentElement.clientHeight
      }
    }
  }

10.跨瀏覽器獲取Style

function getStyle(element, attr) {
iftypeofwindow'undefined'//W3C   (.getComputedStyle !=) {
returnwindownull       .getComputedStyle(element,)[attr];
elseiftypeof'undeinfed'//IE    }(element.currentStyle !=) {
return       element.currentStyle[attr];
    }
}

11.js動態插入css相關styleSheets,insertRule,addRule,還有刪除樣式:deleteRule,removeRule

標準瀏覽器支持 insertRule, IE低版本則支持 addRule。

12.獲取頁面的寬高

window.innerWidth,window.innerHeight與document.documentElement.clientWidth,document.documentElement.clientHeight

注:用jquery獲取的頁面的寬度頁面不包括滾動條的寬度的

window.innerWidth與window.innerHeight(IE9及以上,谷歌,火狐識別,寬高包含滾動條的寬度)
document.documentElement.clientWidth與document.documentElement.clientHeight(IE,火狐,谷歌都能識別,寬高不包含滾動條的寬度)
若是頁面沒有滾動條:
window.innerWidth==document.documentElement.clientWidth,
window.innerHeight==document.documentElement.clientHeight(IE8及一下不識別window.innerHeight與window.innerWidth)

//跨瀏覽器獲取視口大小function getInner() {
iftypeofwindow'undefined'//IE8及如下undefined   (.innerWidth !=) {
return       {
widthwindow           :.innerWidth,
heightwindow           :.innerHeight
        }
else    }{
return       {
widthdocument           :.documentElement.clientWidth,
heightdocument           :.documentElement.clientHeight
        }
    }
}

13.使用localStorage存儲數據,存儲位置在哪裏?

這個是瀏覽器隔離的,每一個瀏覽器都會把localStorage存儲在本身的UserData中,如chrome通常就是

C:\Users\你的計算機名\AppData\Local\Google\Chrome\User Data\Profile\Local Storage
若是要在瀏覽器查看,打開調試工具,在application選項卡下能夠查看。

 知海匠庫web前端課程http://www.zhihaijiangku.com,研發自網易系,項目教學,貼合企業用人需求,助你高薪就業。

相關文章
相關標籤/搜索