گاهی در صفحات وب لازم است اطلاعاتی نمایش داده شود که برای کاربر قابل خواندن باشد، اما در عین حال نسخهای دقیق و استاندارد از همان داده نیز برای ماشینها یا اسکریپتها در دسترس قرار گیرد. در چنین شرایطی HTML یک راهحل ساده اما بسیار کاربردی ارائه میدهد به نام تگ data.
این تگ به توسعهدهندگان اجازه میدهد یک مقدار قابل پردازش (machine‑readable) را به محتوایی که کاربر میبیند متصل کنند. به همین دلیل در موقعیتهایی مانند نمایش قیمت محصولات، شناسهها یا دادههایی که توسط JavaScript پردازش میشوند، کاربرد زیادی دارد.
در ادامه با تگ data در HTML، ساختار آن، نحوه استفاده در پروژههای واقعی و تفاوت آن با تگهای مشابه آشنا میشویم. اگر هنوز با ساختار کلی عناصر و نحوه نقشآفرینی آنها در یک سند آشنا نیستید، راهنمای HTML چیست نقطه شروع مناسبتری است.
تگ data در HTML چیست و چه کاربردی دارد؟
تگ data در HTML یک تگ معنایی است که برای پیوند دادن یک مقدار قابل پردازش توسط ماشین به محتوایی که کاربر میبیند استفاده میشود. این تگ اطمینان میدهد که اطلاعات هم برای نمایش بصری مناسب است و هم برای تجزیه و تحلیل توسط نرمافزارها و موتورهای جستجو، و معمولاً از ویژگی value برای تعریف مقدار استاندارد استفاده میکند.
تگ data به شما امکان میدهد یک مقدار مشخص و قابل پردازش توسط ماشین را به یک قطعه محتوا مرتبط کنید. این یعنی شما میتوانید اطلاعاتی را نمایش دهید که هم برای کاربر قابل فهم باشد و هم برای نرمافزارها، موتورهای جستجو، یا اسکریپتهای جاوااسکریپت معنای دقیقی داشته باشد.
برای دیدن جایگاه data در کنار سایر عناصر متنمحور و تگهای HTML، میتوانید از مرجع تگهای HTML استفاده کنید.
چرا HTML به تگ data نیاز دارد؟
در گذشته، برای نمایش دادههای غیر بصری، اغلب از تگ <span> همراه با ویژگیهای سفارشی (custom attributes) استفاده میشد. اما این رویکرد استانداردهای HTML را نقض میکرد و برای موتورهای جستجو و ابزارهای دسترسپذیری (accessibility tools) ابهام ایجاد مینمود. تگ <data> این مشکل را با ارائه یک راه استاندارد و معنایی حل کرده است. این تگ تضمین میکند که اطلاعات، هم برای نمایش به کاربر مناسب است و هم برای پردازش ماشین.
مفهوم داده قابل خواندن برای ماشین (Machine‑Readable Data)
داده قابل خواندن برای ماشین به دادههایی گفته میشود که ساختار مشخصی دارند و به راحتی توسط برنامههای کامپیوتری قابل تجزیه و تحلیل هستند. تگ <data> با استفاده از ویژگی value، دقیقا همین قابلیت را فراهم میکند. برای مثال، وقتی قیمتی را نمایش میدهید، ممکن است بخواهید آن را به صورت «$10.99» نشان دهید، اما برای پردازشهای بانکی یا مقایسهای، نیاز به یک عدد دقیق مانند 10.99 دارید. تگ data این دو را به هم پیوند میدهد.
ساختار و Syntax تگ data در HTML
استفاده از تگ data بسیار ساده و مشابه دیگر تگهای HTML است. این تگ یک تگ جفتی (pair tag) است، به این معنی که هم تگ باز و هم تگ بسته دارد و محتوای قابل نمایش برای کاربر را در خود جای میدهد. مهمترین و تنها ویژگی این تگ، value است.
ساختار پایه تگ data
ساختار کلی تگ data به این شکل است:
محتوای قابل نمایش برای کاربر
در اینجا، machine_readable_value همان دادهای است که قرار است توسط ماشینها پردازش شود، و محتوای قابل نمایش برای کاربر همان چیزی است که کاربران در مرورگر میبینند.
ویژگی مهم value در تگ data
ویژگی value مهمترین بخش تگ <data> است و نقش کلیدی در عملکرد آن ایفا میکند. این ویژگی، مقدار واقعی و استاندارد شده داده را در خود نگه میدارد. مرورگرها این مقدار را مستقیماً به کاربر نمایش نمیدهند، بلکه آن را در دسترس اسکریپتها یا APIهای دیگر قرار میدهند.
اگر میخواهید value را در کنار سایر ویژگیها، عناصر قابل استفاده و نوع مقدار آنها بررسی کنید، مرجع اتریبیوتهای HTML را ببینید.
مثال ساده از استفاده تگ data
فرض کنید میخواهید شناسه یک محصول را نمایش دهید. شناسه محصول (مثلاً 42-234-212) برای کاربر ممکن است اهمیتی نداشته باشد، اما برای سیستم مدیریت محتوا یا سبد خرید ضروری است. در اینجا چگونه از تگ <data> استفاده میکنید:
محصول انتخاب شده: تیشرت نخی سایز M
در این مثال، کاربر عبارت “تیشرت نخی سایز M” را میبیند، در حالی که برنامههای جاوااسکریپت یا موتورهای جستجو میتوانند به راحتی به مقدار 42-234-212 دسترسی پیدا کنند.
مثال: نمایش قیمت با تگ <data>
اگر میخواهید قیمت یک محصول را به دلار نمایش دهید، اما برای پردازش داخلی به عدد نیاز دارید:
قیمت محصول: $10.99
کاربرد تگ data در پروژههای واقعی وب
شاید در نگاه اول تصور کنید که تگ data تفاوت چندانی با تگهای معمولی ندارد، اما قدرت واقعی این تگ زمانی مشخص میشود که بخواهید دادههای لایه کد (Back-end) را به لایه نمایش (Front-end) متصل کنید، بدون اینکه تجربه کاربری را مختل نمایید.
استفاده در نمایش اطلاعات محصول
در فروشگاههای اینترنتی، محصولات اغلب دارای یک نام تجاری (قابل فهم برای کاربر) و یک شناسه منحصربهفرد یا SKU (قابل فهم برای سیستم انبارداری) هستند. با استفاده از تگ data، میتوانید نام محصول را نمایش دهید و شناسه آن را در ویژگی value ذخیره کنید تا اگر کاربر محصول را به سبد خرید اضافه کرد، اسکریپتها دقیقاً بدانند کدام محصول انتخاب شده است.
استفاده در قیمتها و شناسهها
یکی از چالشهای بزرگ در طراحی وب، نمایش مبالغ به صورت محلی (Localization) است. برای مثال، ممکن است بخواهید قیمت را به صورت «۱۲,۰۰۰ تومان» نشان دهید، اما برای محاسبات ریاضی در جاوااسکریپت به عدد انگلیسی 12000 نیاز دارید. تگ data بهترین گزینه برای این کار است:
قیمت نهایی: ۱۲,۰۰۰ تومان
کاربرد در دادههای قابل پردازش توسط اسکریپت
در اپلیکیشنهای مدرن (Web Apps)، تگ <data> به عنوان یک پل ارتباطی بین HTML و جاوااسکریپت عمل میکند. شما میتوانید لیستی از آیتمها داشته باشید که هر کدام یک مقدار عددی یا رشتهای مخفی (در ویژگی value) دارند. اسکریپتهای شما میتوانند با خواندن این مقادیر، عملیات فیلتر کردن، مرتبسازی یا ارسال داده به سرور را انجام دهند.
سناریوی واقعی: مدیریت لیست پخش (Playlist)
فرض کنید یک لیست پخش موسیقی دارید. کاربر نام آهنگ را میبیند، اما سیستم برای پخش نیاز به ID آهنگ دارد:
- نام نمایشی: آهنگ شماره یک
- شناسه سیستمی: track_id_9921
کد HTML آن به این صورت خواهد بود:
- آهنگ شماره یک
- آهنگ شماره دو
تفاوت تگ <data> با تگهای مشابه در HTML
در HTML چندین تگ وجود دارند که در نگاه اول ممکن است عملکردی مشابه با <data> داشته باشند. اما هرکدام هدف معنایی (Semantic Purpose) متفاوتی دارند. درک این تفاوتها کمک میکند ساختار HTML استانداردتر، قابل فهمتر و سازگارتر با موتورهای جستجو و ابزارهای دسترسپذیری ایجاد کنید.
تفاوت <data> و <span>
تگ span یک عنصر عمومی و بدون معنای اختصاصی است؛ در مقابل، data برای حالتی طراحی شده که محتوای قابل مشاهده با یک مقدار ماشینخوان مشخص ارتباط دارد. اگر میخواهید تفاوت عناصر معنایی و عناصر خنثی را در سطح گستردهتری بررسی کنید، راهنمای HTML معنایی این موضوع را کاملتر توضیح میدهد.
مثال:
۱۲,۰۰۰ تومان
در این حالت هیچ اطلاعات اضافی درباره مقدار واقعی داده وجود ندارد. اما با استفاده از <data>:
۱۲,۰۰۰ تومان
در اینجا مقدار واقعی داده برای سیستمها مشخص است.
تفاوت <data> و <time>
تگ <time> به طور خاص برای نمایش تاریخ و زمان طراحی شده است. این تگ معمولاً از ویژگی datetime استفاده میکند تا مقدار استاندارد تاریخ یا زمان را مشخص کند.
مثال:
در مقابل، <data> برای هر نوع داده قابل پردازش استفاده میشود و محدود به زمان یا تاریخ نیست.
تفاوت <data> و <output>
تگ <output> برای نمایش نتیجه یک محاسبه یا عملیات در فرمها و اپلیکیشنهای وب استفاده میشود. معمولاً این تگ با JavaScript یا عناصر فرم تعامل دارد.
مثال:
در حالی که <data> برای ذخیره یک مقدار استاندارد مرتبط با محتوای نمایش داده شده استفاده میشود و الزاماً نتیجه یک محاسبه نیست.
جدول مقایسه این تگها
| تگ HTML | هدف اصلی | نوع داده |
|---|---|---|
| <data> | اتصال مقدار قابل پردازش به متن نمایشی | هر نوع داده |
| <span> | گروهبندی یا استایلدهی متن | بدون مفهوم معنایی |
| <time> | نمایش تاریخ و زمان | داده زمانی |
| <output> | نمایش نتیجه محاسبات | داده محاسباتی |
استفاده از CSS و JavaScript با تگ data
تگ <data> فقط برای نشانهگذاری معنایی نیست؛ در پروژههای واقعی میتواند پلی بین محتوای قابل مشاهده و دادهای باشد که CSS یا JavaScript از آن استفاده میکنند. همین ویژگی باعث میشود این تگ در رابطهای کاربری تعاملی، کاربردیتر از چیزی باشد که در نگاه اول به نظر میرسد.
آیا میتوان با CSS به تگ data استایل داد؟
بله. چون <data> یک عنصر HTML معمولی است، میتوانید دقیقاً مانند سایر عناصر به آن CSS بدهید. برای مثال میشود رنگ، فونت، فاصله یا حتی حالتهای hover را روی آن اعمال کرد.
قیمت محصول: ۱۲,۰۰۰ تومان
.price {
color: #0a7;
font-weight: bold;
}
در اینجا CSS فقط روی ظاهر اثر میگذارد، نه روی مقدار value. یعنی کاربر همچنان متن «۱۲,۰۰۰ تومان» را میبیند، اما سیستم میتواند مقدار واقعی 12000 را جداگانه بخواند.
خواندن مقدار value با JavaScript
یکی از مهمترین کاربردهای <data> زمانی است که بخواهید از طریق JavaScript به مقدار استاندارد آن دسترسی پیدا کنید. این کار با ویژگی .value انجام میشود.
قیمت: ۱۲,۰۰۰ تومان
const price = document.getElementById("product-price").value;
console.log(price); // 12000
این الگو زمانی مفید است که مقدار نمایشی با مقدار پردازشی یکسان نباشد. مثلاً متن ممکن است فارسی، قالببندیشده یا همراه با واحد پول باشد، اما جاوااسکریپت به یک مقدار خام و استاندارد نیاز دارد.
مثال کاربردی: محاسبه مجموع قیمتها
فرض کنید چند قیمت در صفحه دارید و میخواهید مجموع آنها را حساب کنید. تگ data این کار را سادهتر میکند، چون لازم نیست متن را پاکسازی یا تبدیل کنید.
- ۱۲,۰۰۰ تومان
- ۸,۵۰۰ تومان
- ۱۵,۰۰۰ تومان
const prices = document.querySelectorAll(".item-price");
let total = 0;
prices.forEach(item => {
total += Number(item.value);
});
console.log(total); // 35500
در چنین حالتی، <data> باعث میشود داده تمیزتر، قابلپیشبینیتر و مناسبتر برای پردازش باشد.
تفاوت <data> با data-* attribute را اشتباه نگیرید
یکی از اشتباهات رایج این است که تگ data با ویژگیهای سفارشی data-* یکی فرض شود. این دو به هم مرتبطاند، اما یکی نیستند.
- <data> یک عنصر معنایی HTML است.
- data-* یک ویژگی سفارشی برای ذخیره اطلاعات اضافی روی هر عنصر HTML است.
مثال data-*:
محصول ویژه
مثال <data>:
۱۲,۰۰۰ تومان
اگر داده شما مستقیماً به محتوای نمایشدادهشده مربوط است، <data> انتخاب معناییتری است. اما اگر فقط میخواهید یک مقدار سفارشی برای اسکریپت ذخیره کنید، data-* میتواند مناسبتر باشد.
بهترین روشها برای استفاده از تگ data در HTML
استفاده از تگ data زمانی بیشترین ارزش را ایجاد میکند که با اصول استاندارد HTML، نیازهای SEO و معماری فرانتاند هماهنگ باشد. این بخش مجموعهای از بهترین روشها (Best Practices) ارائه میدهد تا استفاده از <data> در پروژههای واقعی تمیز، قابل نگهداری و سازگار بماند.
استفاده از <data> فقط زمانی که مقدار پردازشی لازم دارید
اگر مقدار نمایشی دقیقاً همان مقداری است که JavaScript نیاز دارد، استفاده از <data> ضرورتی ندارد. این تگ زمانی ارزشمند است که:
- مقدار نمایشی متفاوت از مقدار قابلپردازش باشد
- نیاز به یک مقدار استاندارد و یکنواخت برای اسکریپتها وجود داشته باشد
- خروجی باید توسط موتورهای جستجو یا پردازشگرهای داده قابلتفسیر باشد
مثال مناسب:
۱۲,۰۰۰ تومان
مثال نامناسب:
12000
مقدار value باید کوتاه، دقیق و استاندارد باشد
ویژگی value باید حاوی دادهای باشد که:
- فاقد فرمتگذاری (Format-Free) باشد
- فقط شامل مقدار خام و موردنیاز سیستم باشد
- بدون واحد، علامت، فاصله یا رمزگذاری اضافی باشد
نمونه صحیح:
سال ۲۰۲۵
از تگهای Semantic دیگر بیش از حد استفاده نکنید
گاهی دیده میشود که توسعهدهندگان تعداد زیادی <data> در یک صفحه قرار میدهند، حتی در مواردی که هدف نمایش داده نیست. این کار باعث سنگینی ساختار و از بین رفتن شفافیت HTML میشود. استفاده از <data> فقط در موارد ضروری توصیه میشود.
از ترکیب <data> و کلاسهای توصیفی استفاده کنید
برای افزایش خوانایی، کلاسهای مناسب به <data> اضافه کنید تا در CSS و JavaScript راحتتر آن را هدف بگیرید.
۴۵,۰۰۰ تومان
این کار باعث میشود نقش عنصر در رابط کاربری بهتر درک شود.
از <data> برای دادههای تکراری یا پیچیده استفاده نکنید
ویژگی value فقط باید یک مقدار استاندارد باشد، نه یک شیء JSON یا متن طولانی. اگر نیاز به ذخیره دادههای پیچیده دارید، به جای آن از:
- data-* custom attributes
- JSON داخل <script type=”application/json”>
- API endpoints
استفاده کنید.
از <data> در کنار <time> و عناصر مرتبط استفاده کنید
وقتی داده شما با تاریخ، زمان یا رویدادهای قابل محاسبه مرتبط است، در صورت لزوم میتوانید از ترکیب عناصر استفاده کنید. این کار Semantic HTML را تقویت میکند و برای Search Engine ها مفید است.
مثال:
تاریخ انتشار:
اشتباهات رایج هنگام استفاده از تگ data در HTML
با وجود سادگی، برخی تصورات اشتباه در مورد تگ data میتواند منجر به کدهای غیربهینه یا بلااستفاده شود. در این بخش، رایجترین اشتباهات را بررسی میکنیم تا از تلههای رایج دور بمانید.
۱. استفاده از تگ data برای دادههای غیرقابل پردازش
تگ data برای اتصال یک مقدار ماشینخوان (Machine-Readable) به متن است. قرار دادن جملات توضیحی یا دادههایی که هیچ کاربرد برنامهنویسی ندارند در ویژگی value، هدف معنایی این تگ را از بین میبرد.
- اشتباه: <data value=”توضیحات مربوط به محصول”>نام محصول</data>
- صحیح: برای توضیحات متنی از تگهای مناسب محتوایی استفاده کنید و اگر دادهای برای پردازش دارید، آن را در value قرار دهید.
۲. جایگزینی نادرست با تگهای معنایی تخصصی
استفاده از <data> به جای تگهایی که هدف خاصی دارند (مانند <time> برای تاریخ)، یک خطای ساختاری است. وقتی تگ تخصصیتری برای محتوای شما وجود دارد، اولویت همیشه با آن است.
- اشتباه: <data value=”2025-05-02″>۲ اردیبهشت ۱۴۰۴</data>
- صحیح: <time datetime=”2025-05-02″>۲ اردیبهشت ۱۴۰۴</time>
۳. نادیده گرفتن ماهیت متنی ویژگی value
به یاد داشته باشید که ویژگی value همیشه یک رشته (String) است، حتی اگر فقط شامل اعداد باشد. اگر بدون تبدیل کردن آن به نوع عددی (Number) در محاسبات جاوااسکریپت استفاده شود، ممکن است باعث نتایج غیرمنتظره (مانند اتصال رشتهها به جای جمع ریاضی) شود.
- نکته: همیشه قبل از انجام محاسبات ریاضی، مقدار آن را با Number() یا parseInt() به عدد تبدیل کنید.
۴. زیادهروی در استفاده (Over-engineering)
استفاده از <data> در هر بخش کوچکی از صفحه که نیاز به پردازش ندارد، کد را شلوغ و مدیریت آن را برای موتورهای جستجو و توسعهدهندگان دشوار میکند. فقط زمانی از آن استفاده کنید که دادهی مخفیِ ارزشمندی دارید که برای اسکریپتها یا خزشگرها (Crawlers) کاربردی است.
۵. فراموش کردن دسترسپذیری (Accessibility)
تگ data به تنهایی اطلاعاتی به صفحهخوانها (Screen Readers) اضافه نمیکند. اگر دادهای که در value قرار دارد برای کاربر حیاتی است، باید به نحوی در متن اصلی نیز منعکس شود تا همه کاربران از آن آگاه شوند. هرگز اطلاعات حیاتی را صرفاً در ویژگی value قرار ندهید.
پشتیبانی در مرورگرهای مختلف
تگ data به عنوان یک عنصر معنایی جدید در HTML5 معرفی شده است و به طور کلی در تمامی مرورگرهای مدرن پشتیبانی میشود. اما برای اطمینان از اینکه کاربران با هر نوع مرورگری که کار میکنند، بهترین تجربه را داشته باشند، در این بخش بررسی اجمالی از پشتیبانی مرورگرها ارائه میدهیم.
پشتیبانی مرورگرها
در جدول زیر وضعیت پشتیبانی تگ <data> را در مرورگرهای مختلف مشاهده میکنید:
| Chrome | Firefox | Safari | Edge | Opera |
|---|---|---|---|---|
| ✅ 15+ | ✅ 15+ | ✅ 10+ | ✅ 12+ | ✅ 10+ |
آخرین بهروزرسانی: 1405 | منبع: CanIUse
نکات مهم در پشتیبانی
- مرورگرهای مدرن: تگ <data> به طور کامل توسط مرورگرهای مدرن از جمله Chrome، Firefox و Safari پشتیبانی میشود.
- نسخههای قدیمی: در نسخههای قدیمیتر برخی مرورگرها (مانند IE) این تگ پشتیبانی نمیشود. بنابراین در صورت نیاز به کارایی معادل در مرورگرهای قدیمیتر، پیشنهاد میشود از data-* attributes استفاده کنید.
- دسترسی و قابلیت نمایشی: از آنجایی که <data> به عنوان یک عنصر معنایی محسوب میشود، میتواند تأثیر مثبتی بر SEO و قابلیت دسترسی (Accessibility) داشته باشد.
جمع بندی
تگ data یک ابزار قدرتمند برای توسعهدهندگان وب است، که هم قابلیتهای دسترسی به دادهها را فراهم میکند و هم به معنای بهتر محتوای HTML کمک میکند. با درک درست و استفاده از این تگ در پروژههای واقعی وب، میتوانید کد خود را تمیزتر، منطقیتر و کاربرپسندتر کنید.
تگ data زمانی مفید است که مقدار قابل مشاهده برای کاربر با مقداری که سیستم یا JavaScript باید پردازش کند متفاوت باشد. در چنین شرایطی، استفاده درست از value میتواند ارتباط میان محتوای نمایشی و مقدار ماشینخوان را شفافتر کند.
اگر بعد از این مقاله میخواهید HTML را از پایه و در یک مسیر منظم یاد بگیرید، دوره مستر HTML میتواند قدم بعدی شما باشد.
سوالات متداول
تگ data یک عنصر معنایی HTML است که به شما اجازه میدهد یک مقدار ماشینخوان (Machine‑Readable) را به یک متن قابلنمایش برای کاربر متصل کنید. این مقدار در ویژگی value ذخیره میشود و برای پردازش توسط JavaScript، خزندهها یا ابزارهای تحلیلی کاربرد دارد.
تگ data یک عنصر HTML مستقل و معنایی است، در حالی که data-* یک ویژگی (attribute) برای افزودن داده به هر عنصر HTML محسوب میشود. <data> زمانی استفاده میشود که داده مستقیماً به محتوای متنی مرتبط باشد، اما data-* برای نگهداری متادیتای سفارشی مناسبتر است.
زمانی از <data> استفاده کنید که متن نمایشی شما یک مقدار قابل پردازش مشخص (مانند قیمت، شناسه یا امتیاز) دارد. <span> هیچ معنای خاصی ندارد و فقط برای استایل یا گروهبندی بصری استفاده میشود، اما <data> معنا و هدف مشخصی به محتوا میدهد.
بهصورت غیرمستقیم بله. تگ data با افزودن معنای ساختیافته به محتوا، به موتورهای جستجو کمک میکند دادهها را بهتر درک کنند. اگر بهدرستی و در جای مناسب استفاده شود، میتواند فهم محتوایی صفحه را بهبود دهد، اما بهتنهایی عامل رتبهبندی نیست.
خیر. مقدار value همیشه بهصورت رشته متنی (String) ذخیره میشود، اما میتواند نمایانگر عدد، تاریخ، شناسه یا هر داده قابل پردازش دیگری باشد. در صورت نیاز به محاسبات عددی، باید آن را در JavaScript به Number تبدیل کنید.
بله، اما به شرط استفاده صحیح. تگ data به خودی خود مشکل دسترسپذیری ایجاد نمیکند، اما اطلاعات حیاتی نباید فقط در value پنهان شوند. متن نمایشی باید برای کاربران و صفحهخوانها کافی و قابل درک باشد.
خیر. تگ <data> باید هدفمند استفاده شود. اگر دادهای نیاز به پردازش یا معنا ندارد، استفاده از آن باعث شلوغی کد و کاهش خوانایی HTML میشود. بهترین رویکرد، استفاده حداقلی و دقیق در سناریوهای واقعی است.