欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中DOM和BOM的區(qū)別與用處詳解

 更新時間:2024年09月23日 14:12:02   作者:歲月寧靜  
這篇文章主要介紹了JavaScript中DOM和BOM的區(qū)別與用處,DOM和BOM是前端開發(fā)中常用的兩個概念,它們分別表示不同的對象模型,用于操作瀏覽器的不同部分,了解它們的區(qū)別和用處,有助于在前端開發(fā)中靈活使用?JavaScript?操作頁面和瀏覽器,需要的朋友可以參考下

1. 概念與定義

  • DOM (Document Object Model) : 文檔對象模型,它是一種標準的編程接口,表示 HTML 或 XML 文檔的結(jié)構(gòu),使得開發(fā)者可以通過 JavaScript 動態(tài)地訪問和操作文檔的內(nèi)容、結(jié)構(gòu)和樣式。DOM 將文檔表示為節(jié)點樹,其中每個節(jié)點都表示文檔的一部分,如元素、屬性、文本等。
  • BOM (Browser Object Model) : 瀏覽器對象模型,它是指由瀏覽器提供的一組對象,用于與瀏覽器窗口進行交互。BOM 并不局限于操作文檔本身,而是可以操作瀏覽器的其他功能,如控制瀏覽器窗口、導航歷史、定位 URL 以及瀏覽器相關的信息等。

2. 區(qū)別

  • 操作對象:

    • DOM 操作的是文檔結(jié)構(gòu),包括元素節(jié)點、文本節(jié)點、屬性等。
    • BOM 操作的是瀏覽器窗口及其周邊的功能,如導航、窗口大小、位置等。
  • 標準性:

    • DOM 是由 W3C 標準定義的,是跨瀏覽器的一致接口。
    • BOM 不是一個正式的標準,各個瀏覽器的實現(xiàn)可能有所不同。
  • 常用屬性和方法:

    • DOM 常用方法有 getElementByIdquerySelector、appendChild 等,用于訪問和操作 HTML 元素。
    • BOM 常用對象有 windownavigator、location、history 等,用于與瀏覽器相關的操作。

3. 用處舉例

DOM 的用處示例

  • 動態(tài)修改頁面內(nèi)容
 // 獲取元素并修改其文本內(nèi)容和樣式
    let header = document.querySelector('.header')
    header.textContent = '歡迎來到我的網(wǎng)站'
    header.style.color = 'blue' // 修改文本顏色
    header.style.fontSize = '24px' // 修改字體大小

    // 修改元素的屬性
    let link = document.querySelector('a')
    link.setAttribute('href', 'https://www.newlink.com') // 修改鏈接地址
    link.setAttribute('target', '_blank') // 在新窗口打開鏈接
  • 創(chuàng)建和插入新元素
  // 創(chuàng)建新的列表項元素
    let newItem = document.createElement('li')
    newItem.textContent = '新列表項'

    // 將新元素插入到現(xiàn)有的列表中
    let list = document.getElementById('myList')
    list.appendChild(newItem)

    // 在指定位置插入元素
    let anotherItem = document.createElement('li')
    anotherItem.textContent = '插入的新列表項'
    list.insertBefore(anotherItem, list.children[1]) // 在第二個子元素之前插入
  • 監(jiān)聽用戶交互事件
// 為按鈕添加點擊事件監(jiān)聽器
let button = document.getElementById("submitButton");
button.addEventListener("click", function() {
    alert("按鈕被點擊了!");
});

BOM 的用處示例

控制瀏覽器窗口

  // 打開一個新的窗口并設置一些窗口屬性
    let newWindow = window.open('https://www.example.com', '_blank', 'width=800,height=600')

    // 移動窗口到屏幕指定位置
    newWindow.moveTo(100, 100)

    // 調(diào)整窗口大小
    newWindow.resizeTo(500, 500)

    // 關閉窗口
    newWindow.close()

瀏覽器信息和導航

javascript
復制代碼
// 獲取瀏覽器的用戶代理字符串
let userAgent = navigator.userAgent;
console.log("用戶代理信息:", userAgent);

// 檢測是否為移動設備
if (/Mobi|Android/i.test(userAgent)) {
    console.log("這是一個移動設備");
}

操作 URL 和導航

javascript
復制代碼
// 獲取當前頁面的 URL
let currentUrl = window.location.href;
console.log("當前 URL:", currentUrl);

// 重定向到新的頁面
window.location.;

瀏覽器信息和導航

 // 獲取瀏覽器用戶代理信息
    let userAgent = navigator.userAgent
    console.log('用戶代理:', userAgent)

    // 檢測是否為某個瀏覽器
    if (userAgent.indexOf('Chrome') > -1) {
        console.log('當前瀏覽器是 Chrome')
    }

    // 獲取當前頁面的 URL 信息
    console.log('當前 URL:', window.location.href)
    console.log('協(xié)議:', window.location.protocol)
    console.log('主機名:', window.location.hostname)
    console.log('路徑名:', window.location.pathname)

    // 導航到新頁面
    window.location.

    // 重載當前頁面
    window.location.reload()

    // 瀏覽器歷史記錄操作
    window.history.back() // 返回上一頁
    window.history.forward() // 前進到下一頁

操作 localStorage 和 sessionStorag

// localStorage 持久存儲數(shù)據(jù)(頁面關閉后仍然存在)
localStorage.setItem("username", "JohnDoe");
let username = localStorage.getItem("username");
console.log("用戶名:", username);

// 移除存儲的數(shù)據(jù)
localStorage.removeItem("username");

// sessionStorage 臨時存儲數(shù)據(jù)(頁面關閉后數(shù)據(jù)消失)
sessionStorage.setItem("sessionID", "123456");
let sessionID = sessionStorage.getItem("sessionID");
console.log("會話 ID:", sessionID);

// 清除所有 sessionStorage 數(shù)據(jù)
sessionStorage.clear();

定時器與計時器

// 設置定時器,每隔一秒執(zhí)行一次
let count = 0;
let intervalID = setInterval(() => {
    console.log(`計時器執(zhí)行次數(shù): ${count}`);
    count++;
    if (count === 5) {
        clearInterval(intervalID); // 停止定時器
    }
}, 1000);

// 延時執(zhí)行函數(shù)
setTimeout(() => {
    console.log("延時執(zhí)行的代碼");
}, 2000);

彈出對話框

// 提示框
alert("這是一個提示框!");

// 確認框
let confirmResult = confirm("你確定要刪除這條記錄嗎?");
if (confirmResult) {
    console.log("用戶點擊了確認");
} else {
    console.log("用戶點擊了取消");
}

// 輸入框
let userInput = prompt("請輸入你的名字:", "匿名");
if (userInput !== null) {
    console.log(`你好,${userInput}`);
}

4. 總結(jié)

  • DOM 更關注文檔內(nèi)容的操作,適合用于創(chuàng)建動態(tài)內(nèi)容、用戶交互、表單驗證等場景。
  • BOM 更側(cè)重于瀏覽器窗口和外部環(huán)境的交互,如頁面導航、窗口控制和瀏覽器信息獲取等。

在實際開發(fā)中,DOM 和 BOM 往往結(jié)合使用,以實現(xiàn)更加豐富和復雜的功能。理解它們的區(qū)別和各自的用處,可以幫助開發(fā)者更好地處理頁面和瀏覽器相關的任務。

以上就是JavaScript中DOM和BOM的區(qū)別與用處詳解的詳細內(nèi)容,更多關于JavaScript DOM和BOM區(qū)別及用處的資料請關注腳本之家其它相關文章!

相關文章

  • JS防抖節(jié)流函數(shù)的實現(xiàn)與使用場景

    JS防抖節(jié)流函數(shù)的實現(xiàn)與使用場景

    在行走江湖的過程中,會出現(xiàn)很多性能優(yōu)化的問題來讓你手足無措,那么這篇文章主要給大家介紹了關于JS防抖節(jié)流函數(shù)的實現(xiàn)與使用場景,針對這兩個問題來為你答疑解惑,需要的朋友可以參考下
    2021-07-07
  • JavaScript利用閉包實現(xiàn)模塊化

    JavaScript利用閉包實現(xiàn)模塊化

    本文主要介紹了JavaScript利用閉包實現(xiàn)模塊化的方法。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • js調(diào)用刷新界面的幾種方式

    js調(diào)用刷新界面的幾種方式

    這篇文章主要為大家詳細介紹了js調(diào)用刷新界面的幾種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 淺談JavaScript宏任務和微任務執(zhí)行順序

    淺談JavaScript宏任務和微任務執(zhí)行順序

    本文主要介紹了JavaScript宏任務和微任務執(zhí)行順序,結(jié)合實例代碼進行了詳細的講解,需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06
  • javascript全局變量封裝模塊實現(xiàn)代碼

    javascript全局變量封裝模塊實現(xiàn)代碼

    javascript全局變量封裝模塊的應用,本文將詳細介紹,需要了解更多的朋友可以參考下
    2012-11-11
  • JS運算符優(yōu)先級與表達式示例詳解

    JS運算符優(yōu)先級與表達式示例詳解

    這篇文章主要給大家介紹了關于JS運算符優(yōu)先級與表達式的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • JS Array創(chuàng)建及concat()split()slice()的使用方法

    JS Array創(chuàng)建及concat()split()slice()的使用方法

    下面小編就為大家?guī)硪黄狫S Array創(chuàng)建及concat()split()slice()的使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 詳解JavaScript引擎V8執(zhí)行流程

    詳解JavaScript引擎V8執(zhí)行流程

    本文主要講解的是V8的技術,是V8的入門篇,主要目的是了解V8的內(nèi)部機制,希望對前端,快應用,瀏覽器,以及nodejs同學有些幫助。這里不涉及到如何編寫優(yōu)秀的前端,只是對JS內(nèi)部引擎技術的講解
    2021-06-06
  • js識別uc瀏覽器的代碼

    js識別uc瀏覽器的代碼

    這篇文章主要介紹了js識別uc瀏覽器的代碼,需要的朋友可以參考下
    2015-11-11
  • Js得到radiobuttonlist選中值的兩種方法(推薦)

    Js得到radiobuttonlist選中值的兩種方法(推薦)

    下面小編就為大家?guī)硪黄狫s得到radiobuttonlist選中值的兩種方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08

最新評論