تعداد بازدید: 346

Dom Document

مرورگر با استفاده از html , css , javascript محتوای مرورگر را نمایش می دهد. هر پنجره از مرورگر یک شئ window می باشد که متعلق به همان صفحه است . window.document یک ساختمان داده یا یک شئ مرتبط با آن صفحه در مرورگر است . در حقیقت document یک property از window می باشد.

window.document یک سند برای نمایش محتوای یک صفحه از مرورگر است . این یک سند است که با ساختار html ساخته شده است و قابل نمایش است . همان طور که یک سند xml هم برای ذخیره اطلاعات داریم.

Dom Document

Dom Document یک نسخه قابل ویرایش از ساختار اصلی یک سند html با فرمت درخت (tree) است که در مرورگر موجود است و یک ساختار برای نمایش محتوا است که با window.document یا document قابل دسترسی می باشند.

DOM اختصار Document Object Model است. این یک شئ جاری است که در مرورگر وجود دارد. مرورگر برای نمایش dom در سیستم عامل شما از حافظه RAM استفاده می کند.

Document Property

یک سری ویژگی های صفحه جاری را می توان با ویژگی های document بدست آورد:

document.URL برای برگرداندن url جاری صفحه
document.title این برای برگرداندن تیتر صفحه کاربرد دارد. به وسیله این ویژگی می توان تیتر صفحه را نیز تغییر داد

document.title = 'hello world'
document.referrer لینکی که از آن این صفحه جاری درخواست داده شده است. این بر اساس فیلد HTTP Referer می باشد.
document.readyState وضعیت لود صفحه جاری را نشان می دهد . از این ویژگی برای فهمیدن این که صفحه جاری کامل لود شده است یا خیر استفاده می کنیم:

  • uninitialized – Has not started loading
  • loading – Is loading
  • loaded – Has been loaded
  • interactive – Has loaded enough to interact with
  • complete – Fully loaded
document.lastModifie نمایش زمان آخرین تغییرات در این صفحه بر اساس فیلد HTTP Last-Modified

document.lastModified
"06/04/2022 05:12:19"
document.domain دامنه مورد نظر را بر می گرداند
document.designMode وضعیت جاری ویرایش سند که اگر برابر off باشد سند قابل ویرایش نیست و اگر برابر on باشد سند قابل ویرایش است . این مقدار می تواند به صورت دستی توسط شما تغییر کند.

document.designMode = "on";
document.cookie لیست کوکی ها را به صورت رشته برمی گرداند.

wp-settings-1=wordpress_test_cookie=WP+Cookie+check;wp_lang=fa_IR
document.characterSet برای مثال UTF-8

یک سری ویژگی ها برای برگرداندن لیست المان های اصلی صفحه است البته یک سری متد جایگزین برای هر کدام موجود است.

document.doctype برگرداندن تگ doctype که همان lastSibiling تگ html است . این مورد یک htmlElement است
document.documentElement تگ html را بر می گرداند. این یک htmlElement است .
document.body تگ body را بر می گرداند. این یک htmlElement است .

document.body.nodeName //BODY
document.head تگ head را بر می گرداند. این یک HTMLElement است.
document.forms لیست فرم های موجود در document را برمی گرداند. این یک HTMLCollection است.

let formCount = document.forms.length
let firstFormId = document.forms[0].id
document.images این لیست تگ های img را بر می گرداند . این یک HTMLCollection است.

const myImages = document.images;
for(i=0;i<myImages.length;i++){
    console.log(myImages[i].src)
}
document.links این لیست تگ های a را بر می گرداند همان تگی که لینک می سازیم با آن . این یک HTMLCollection است.
document.scripts لیست اسکریپت های صفحه جاری که یک HTMLCollection است. به طور مثال می خواهیم بدانیم این صفحه چه تعداد اسکریپت دارد:

document.scripts.length //29

Document Methods

برای ساخت یک سند می توان از متد های open , write , close استفاده کنیم.

document.open() //HTMLDocument
document.write('<!DOCTYPE html><html><head></head><body>hello world</body></html>')
document.close()

هر سند HTML یک سری موجودیت وابسته دارد . این موجودیت ها ساختار اصلی این سند HTML را تشکیل می دهد.

  • HTML Element
    • Element Attribute
    • Event
  • HTML Node
  • Comment

برای ساخت هر یک از موجودیت های بالا یک سری متد داریم :

document.createElement برای ساخت یک element کاربرد دارد.

const para = document.createElement("p");
para.innerText = "This is a paragraph";
document.body.appendChild(para);
document.createTextNode یک شی در ساختار درختی dom که می تواند یک رشته باشد یا یک html tag باشد. tab , line break , … در ساختار درختی text node است.

let textNode = document.createTextNode("Hello World"); 
document.body.appendChild(textNode);

یکی دیگر از کاربردهای textNode برای مقداردهی متن به html element است

const h1 = document.createElement("h1");
const textNode = document.createTextNode("Hello World");
h1.appendChild(textNode);

همچنین در مثال بالا می توانستیم از ویژگی innerText موجودیت html element استفاده کنیم.

document.createAttribute ساخت یک ویژگی برای یک html element است. اگر html element را یک شئ در نظر بگیریم این موجودیت همان ویژگی های ساختار html است.

const att = document.createAttribute("class");
att.value = "display-flex flex-row justify-content-center";

به صورت یکتا ویژگی ها attributes قابل استفاده نیستند و زمانی که به یک html element نسبت داده می شوند معنی پیدا می کنند.

let span = document.createElement('span')
let dataAttribute = document.createAttribute('data-id')
dataAttribute.value = 12
span.setAttributeNode(dataAttribute) //<span data-id="12">

ساده تر این است که با متد setAttribute برای هر html element ویژگی تعیین کنیم که بسیار ساده تر است و تک خطی است.

document.createComment برای ساخت کامنت است . کامنت یک html node است با nodeName = #comment و nodeType = 8 که در ساختار dom می تواند جای گیرد.

let comment = document.createComment('hello header')
document.querySelector('#header').append(comment)

در مثال بالا در لیست فرزندان #header این کامنت قابل دسترسی است. دقت داشته باشید به دلیل این که این یک node است برای دسترسی به آن باید از ویژگی childNodes استفاده کنید.

document.querySelector('#header').childNodes

در انتهای لیست node های برگشت داده شده می توان comment node را مشاهد کنید.

یک سری متد ها برای بدست آوردن متد های موجود در یک صفحه است . داخل یک صفحه یک تعداد موجودیت جدید علاوه بر document می باشد . این موجودیت ها برخی وابسته به هم هستند:

خروجی این متد ها بر اساس این که یک HTML Element برگرداند یا این که یک HTML Collection بر می گرداند می تواند در نام خود Elements , Element داشته باشد.

در زمانی که ما با استفاده از متد ها یا ویژگی ها methods , attributes می توان این ساختار را بررسی کنیم به این شکل است که اگر در آن نام node دیده شد مثل childNodes ساختار برگشتی NodeList است و در غیر اینصورت اگر در ساختار خود این مقدار را نداشت اگر به صورت آرایه بود HTML Collection است.

document.getElementById این متد یک html element برمی گرداند همان طور که از اسم متد پیداست و ورودی آن یک شناسه attribute id است.

document.getElementById("demo");
document.getElementsByClassName لیست المان ها را با کلاس خاص بر می گرداند . همان طور که می دانید attribute class به صورت عمومی به تعداد زیادی element اختصاص می یابد.

const collection = document.getElementsByClassName("example");
document.getElementsByTagName لیست HTML Collection از لیست element های منطبق با این کلاس است .

const collection = document.getElementsByTagName("li");

لیست برگشت داده شده یک ساختمان داده است شبیه به آرایه که المان های آن با index قابل دسترسی است.

document.getElementsByName لیست NodeList برگشت داده شده از المان های منطبق با نام داده شده به متد

document.getElementsByName('search') //NodeList
document.getElementsByTagName لیست HTML Collection از HTML Element هایی منطبق با نام تگ داده شده

const collection = document.getElementsByTagName("li"); 
const collection = document.getElementsByTagName("*");
document.querySelectorAll لیست NodeList بر اساس css selector query است. این فرمت همان فرمت گیرنده در css است.

document.querySelectorAll(".example");
document.querySelector در این متد اولین HTML Element منطبق بر csss query selector است.

document.querySelector("p");

در مثال بالا اولین تگ p را بر می گرداند.

لیست متد های مهم در کار با متد های document برای دریافت المان های موجود (Read) در داخل dom document به شرح موارد بالا است.

مطالب مشابه

JavaScript Statements

در جاوا اسکریپت دستورالعمل های قابل اجرا را statement می گوییم که توسط مفسر جاوا اسکریپت (JavaScript interpreter) که می...

HTML Element Node

هر سند html از ساختار های مختلفی تشکیل شده است. این ساختار به صورت درختی است و هر قسمت از این ساختار یک موجودیت خاص می...

Numbers in JavaScript

تمامی انواع عدد در جاواسکریپت به صورت یک نوع ساختمان داده تعریف می گردد. فضایی که در حافظه برای نوع داده Number تخصیص...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای Dom Document

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *