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 | وضعیت لود صفحه جاری را نشان می دهد . از این ویژگی برای فهمیدن این که صفحه جاری کامل لود شده است یا خیر استفاده می کنیم:
|
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 داشته باشد.
- HTML Collection
getElementsByClassName
getElementsByTagName
- NodeList
getElementsByName
querySelectorAll
- HTML Element
getElementById
querySelector
در زمانی که ما با استفاده از متد ها یا ویژگی ها 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 به شرح موارد بالا است.
دیدگاهتان را بنویسید