搜尋
首頁web前端js教程實作JavaScript的組成(BOM和DOM詳細解讀)
實作JavaScript的組成(BOM和DOM詳細解讀)May 21, 2018 pm 01:52 PM
javascriptjs解讀

下面我就為大家帶來一篇實作JavaScript的組成(BOM和DOM詳細解讀)。現在分享給大家,也給大家做個參考。

我們知道,一個完整的JavaScript的實現,需要由三個部分組成:ECMAScript(核心),BOM(瀏覽器物件模型),DOM(文檔物件模型)。

BOM:

BOM提供了很多對象,用來存取瀏覽器的功能,這些功能於網頁內容無關(這些是DOM的事),目前,BOM已經被W3C搬入了HTML5規範中。

window物件:

BOM的core,表示瀏覽器的一個實例,它既是透過javascript存取瀏覽器視窗的一個接口,又是ECMAScript規定的Global對象,這意味著在網頁中定義的任何一個對象,變數和函數,都已window作為其Global對象,因此有權訪問paresinInt()等方法。 (摘自高程三)。此外,如果一個網頁中包含框架,則每個框架都擁有自己的window對象,並且保存在frames集合中(索引0開始,ltr,ttb)。

首先,全域執行環境中的變量,函數都是window物件的屬型和方法。當然,全域變數與直接定義的window屬型有一點差異,全域變數(準確的說應該是明確宣告的全域變數)無法使用delete,而window屬性就可以。此外,還有一個細節要注意,嘗試存取未宣告的變數會出錯,但是使用查詢window物件就沒有問題。

那麼,window有哪些常見的屬性或方法呢?

1.name,每個window物件都有name屬性,包含框架的名稱。通常是為了了解窗口關係與框架。

2.視窗位置方法:moveTo(新位置的x座標,新位置的y座標),moveBy(水平移動x,垂直移動y)。這兩個方法不適用框架。

3.視窗大小屬性:innerWidth/Height(視圖區(減去邊框的寬度)的大小/* IE,Safari,firefox */),outerWidth/Height(傳回瀏覽器視窗的大小/* IE,Safari,firefox */).在Chrome中,inner,outer皆傳回視圖區的大小。

當然,可以透過resizeTo(新視窗width,新視窗height),resizeBy(比原寬度提高x,比原高度提高y)來改變視窗大小。這戀歌方法不適用框架結構。

4.window.open(URL,視窗目標,特性字串,新頁面是否取代瀏覽器歷史記錄中當前載入頁面的boolean)用於導航到一個特定的url或開啟一個新的窗口。如果指定視窗目標,且視窗目標是已有的視窗或框架的名稱,那麼就會在有改名成的視窗或框架中載入指定的url。否則,就將開啟的新視窗命名為目標視窗。當然,視窗目標可以指定的關鍵字有_self,_parent,_top,_blank。

<a href=http://www.jb51.net>click me</a>
    <script>
    var link=document.getElementsByTagName("a")[0];
      alert(link.nodeName);   
     window.onload=function(){
      
      link.onclick=function () {
        window.open(link.href,"good","width=400px,height=300px");
        return false;
    
      }  
    }
  </script

此處特性字串的具體設定不再贅述,有興趣的可以點擊此處

5.作為一門單執行緒語言,js仍然允許設定超時值(指定的事件過後執行程式碼)和間歇時間值(每隔指定的時間循環一次)來調度程式碼在特定的時刻執行。

逾時呼叫:setTimeout(js程式碼字串,毫秒時間),作為一個單執行緒語言,js的任務佇列每次只能執行一段程式碼,若經過設定的時間間隔過後任務佇列為空,則執行程式碼字串,否則,要等到前面的程式碼執行完成後再執行。

var al=setTimeout(function () {
      alert("good");
    },5000);
    alert(al); //2

此處,我在5秒後調用了一個匿名函數輸出good,窗口先彈出一個警示框顯示2,可見setTimeout()函數返回的是一個數值ID,具有唯一性,那麼我們就可以透過這個ID來清除超時調用,可以使用clearTimeout(ID)來清除。

間接呼叫:setInterval(),他接受的參數與setTimeout()相同,同樣回傳一個數值ID,使用clearTimeout()清除。

6.系統對話框方法:alert(),confirm(),prompt()等在我前面的部落格中有寫道,點擊這裡

location物件

與其說是BOM中的對象,不如說Location是window對像中的一個屬性,當然,也是後面要講的DOM中document對象的屬性,也就是說,window.location和document. location引用同一個物件。

location物件屬性清單,修改這些屬性可以載入新的頁面,且會在歷史記錄中產生新的紀錄。使用location.replace()則不會再歷史紀錄中產生新紀錄。

navigator物件:用於識別瀏覽器的事實標準,其屬性和方法主要用於偵測瀏覽器的類型。

其餘的如history物件(保存歷史紀錄),screen物件(顯示客戶端能力),由於在js中程式設計作用不大,便不再贅述。

-------------------------------------------- ----------------------------------

DOM:

DOM是基於XML後擴充用於HTML的API,DOM依賴節點樹來展開。 

首先需要明確一點,文檔節點是每個節點的根節點,文檔節點有且只有一個子節點既元素html(文檔元素)。

Node類型:

DOM1中的一個接口,由DOM所有節點類型(文字節點,屬性節點,元素節點)實現,該介面在js中作為Node類型實作。

nodeType屬性,每個節點都擁有。由12個數值表示,element--1,attribute--2,text--3......

nodeName屬性,對於元素節點,nodeName的值為標籤名稱。

nodeValue屬性,對於元素節點,nodeValue的值為null。

節點關係:每個節點都有childNodes屬性,保存NodeList(類別陣列物件)物件。每個節點都有parentNode屬性,指向父節點。在childNodes中的節點擁有相同的parentNode。使用previousSibling和nextSibling屬性可以存取兄弟節點。同時childNodes[0]==firstChild,childNodes[childNodes.length-1]==lastChild.

操作節點:appendChild(),向NodeList末尾push一個節點,傳回新增的節點。 insertBefore(),向NodeList首部unshift一個節點,傳回新增節點。 replaceChild(newChild,targetChild),替換目標節點,原節點仍在文件中,但已經沒有位置。 removeChild(tragetChild),移除節點,與replaceChild()的效果類似。 cloneChild(boolean),true時表示完全複製(整個節點與子節點),false表示基本複製。

Document類型:

表示文檔,document物件是HTMLDDocument(繼承自Document類型)的實例,表示整個html頁面。同時,doument物件也是window物件的屬性,因此可以作為全域物件存取。 document.firstChild==html. document.body==body. document.doctype--->對的引用。 doucment.title--->title  document.url--->location.url.

找出元素:getElementById(),getElementsByTagName(),getElementsByClassName().

#文件寫入:write(),writeln(),open(),close()

Element類型:

getAttribute(),取得特性對於class,則使用“ class”,而不是className,在使用element.className時可以取得class特性。

setAttribute(),設定特性,若特性存在,則替換。否則,創建。

removeAttribute(),徹底刪除元素特性。

createElement(),建立新元素。

Text類型:

createTextNode(),建立文字節點,如果連個文字節點是相鄰同胞節點,則這個兩個文字會連接起來,沒有空格。

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

JavaScript的基本規格

#Javascript基本上使用方式

##用p5.js製作煙火特效的範例程式碼_javascript技巧#

hash "#contents" 傳回url中的hash,沒有為「」
host #"www.google.com" #傳回伺服器名稱和連接埠號碼(如果有)
hostname "www.google.com " 傳回不帶連接埠號碼的伺服器名稱
href "www.google.com" 傳回目前頁面的完整url,呼叫了assign()
pathname ''/wileyCDA/' #回傳目錄名稱
##port "8080" #傳回埠號,沒有則回傳空字串
protocol "http:" 返回頁面使用的協定
search "?=javascript" 傳回查詢字串,以問號開頭

以上是實作JavaScript的組成(BOM和DOM詳細解讀)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境