**JavaScript特性:**
* 交互性
* 安全性(不可以直接訪問本地硬盤)
* 跨平臺性(只要是可以解析js的瀏覽器都可以執行,和平臺無關)
**JavaScript三大核心:**
1)核心(ECMAScript):描述了JS的語法和基本對象。
2)文檔對象模型 ☆(DOM):處理網頁內容的方法和接口
3)瀏覽器對象模型(BOM):與瀏覽器交互的方法和接口
[](http://www.flyne.org/wp-content/uploads/2014/08/three-parts-of-JS.jpg)
**BOM對象:**
1\. DOM 是 W3C 的標準; [所有瀏覽器公共遵守的標準]
2\. BOM 是 各個瀏覽器廠商根據 DOM
在各自瀏覽器上的實現;[表現為不同瀏覽器定義有差別,實現方式不同]
3\. window 是 BOM 對象,而非 js 對象;
**BOM常用操作:**
彈出新的瀏覽器窗口
移動、關閉瀏覽器窗口以及調整窗口大小
提供 Web 瀏覽器詳細信息的定位對象
提供用戶屏幕分辨率詳細信息的屏幕對象
對 cookie 的支持
IE 擴展了 BOM,加入了 ActiveXObject 類,可以通過 JavaScript 實例化 ActiveX 對象
javacsript是通過訪問BOM(Browser?Object?Model)對象來訪問、控制、修改客戶端(瀏覽器),由于BOM的window包含了document,window對象的屬性和方法是直接可以使用而且被感知的,因此可以直接使用window對象的document屬性,通過document屬性就可以訪問、檢索、修改XHTML文檔內容與結構。因為document對象又是DOM(Document?Object?Model)模型的根節點。可以說,BOM包含了DOM(對象),瀏覽器提供出來給予訪問的是BOM對象,從BOM對象再訪問到DOM對象,從而js可以操作瀏覽器以及瀏覽器讀取到的文檔。其中
DOM包含:
Window對象包含屬性:document、location、navigator、screen、history、frames
Document根節點包含子節點:forms、location、anchors、images、links
從window.document已然可以看出,DOM的最根本的對象是BOM的window對象的子對象。
區別:DOM描述了處理網頁內容的方法和接口,BOM描述了與瀏覽器進行交互的方法和接口。
window對象的全局作用域:
由于window對象同時扮演著ECMASript中Global對象的角色,因此所有在全局作用域中聲明的變量,函數都會變成window對象的屬性和方法。
~~~
var age=29;
function sayAge(){
alert(this.age);
}
alert(window.age); //29
sayAge(); //29
window.sayAge(); //29
~~~
全局作用域中定義了一個變量age和一個函數sayAge(),他們被自動歸在了window對象的名下。于是,可以通過window.age訪問變量age,可以通過window.satAge()訪問函數sayAge()。由于agyAge()存在于全局作用域中,因此this.age被映射到window.age,最終顯示的是正確的結果。
全局變量會成為window對象的屬性,而且定義全局變量與在window對象上直接定義屬性還是有一點差別:全局變量不能通過delete操作符刪除,而直接在window對象上的定義的屬性可以;
~~~
var age=29;
function sayAge(){
alert(this.age);
}
delete window.age;
~~~
窗口關系及框架
如果頁面中包含框架,則每個框架都擁有自己的window對象,并且保存在frames集合中。在frames集合中,可以通過數值索引或者框架名稱來訪問對應的window對象。每個window對象都有一個name屬性,其中包含框架的名稱。
導航和打開窗口
使用window.open()方法既可以導航到一個特定的URL,也可以打開一個新的瀏覽器窗口。這個方法可以接收4個參數:需加載的URL,窗口目標,一個特性字符串以及一個標示新頁面是否取代瀏覽器歷史記錄中當前加載頁面的布爾值。通過只需要傳遞第一個參數;最后一個參數只在不打開新窗口的情況下使用。
如果window.open()傳遞了第二個參數,而且該參數是已有窗口或框架的名稱,那么就會在其有該名稱的窗口或框架中加載第一個參數指定的URL.
~~~
window.open("http://www.baidu.com",'百度');
~~~
**1.彈出窗口**
如果給window.open()傳遞的第二個參數并不是一個已經存在的窗口或者框架,那么該方法就會根據在第三個參數位置傳入的字符串創建一個新窗口或者標簽頁。如果沒有傳入第三個參數,那么就會打開一個帶有全部默認設置的新窗口;具體彈出窗口后面詳解
**2.安全限制**
現在很多瀏覽器都對彈出窗口做了很多安全限制,包括不允許再屏幕之外創建彈出窗口,不允許將彈出窗口移到屏幕以外,不允許關閉狀態欄等。不允許關閉地址欄。
**3.彈出窗口屏蔽程序**
大多數瀏覽器都內置有彈出窗口屏蔽程序,而沒有內置該類程序的瀏覽器,也可以安裝在YAhoo等帶有內容中屏蔽程序的使用工具,下面的例子可以檢測彈出窗口是否被屏蔽,如果屏蔽的話會返回null;
~~~
var name=window.open("http://www.baidu.com",'百度');
alert(name);
~~~
- 前言
- javascript基礎與定義
- JavaScript變量
- JavaScript變量二(數據類型,Number,String,Object)
- JavaScript傳參的問題
- JavaScript基本類型和引用類型的值
- JavaScript執行環境及作用域
- JavaScript垃圾收集
- JavaScript和JQuery和angularjs操作select
- 搞對象前,你得先有對象
- JavaScript數組
- JavaScript運行原理解析
- Jquery和angularjs獲取check框選中的值小技巧
- JavaScript函數表達式
- JavaScript的閉包理解
- JavaScript BOM
- JavaScritpt的DOM初探之Node(一)
- 為什么說DOM操作很慢
- jQuery性能優化