খালি এইচটিএমএল 5 ডেটা বৈশিষ্ট্যগুলি বৈধ?


115

আমি একটি সাধারণ jQuery প্লাগইন লিখতে চাই যা নির্দিষ্ট উপাদানের অধীনে ইনলাইন মডেলগুলি প্রদর্শন করে। আমার ধারণাটি স্ক্রিপ্টের জন্য উপাদানগুলিতে নির্দিষ্ট ডেটা অ্যাট্রিবিউটের উপর ভিত্তি করে অটো-ইন করা।

একটি খুব মৌলিক উদাহরণ:

<p data-modal-target>Hover over me for an inline modal!</p>
<div data-modal-content data-modal-align="right" data-modal-trigger="hover" data-modal-offset="10px"><!-- any desired syntax can go here --></div>

আমি কেবল ভাবছি data-modal-targetযে উপরের উদাহরণটি বৈধ কিনা, বা এটি হওয়া দরকার data-modal-target="true"? আমি IE9 ইত্যাদির চেয়ে ক্র্যাপিয়ারের কোনও কিছুর জন্য যত্ন নিই না, আমার একমাত্র প্রয়োজন এটি বৈধ HTML5 হওয়া উচিত be


আমি কাস্টম ডেটা অ্যাট্রিবিউটগুলির একটি মান প্রয়োজন বা না তা খুঁজে পাই না; এবং মানটি বাদ দিতে হবে বা নিরাপদ থাকতে কেবল এটি অন্তর্ভুক্ত করবেন কিনা তা সম্পর্কে এখনও আমি অনিশ্চিত। ডাব্লু 3 সি স্পেক বিভ্রান্তিকর (কোনও আশ্চর্য নয়)। আমি মনে করি এটি মান ব্যবহার করে স্ক্রিপ্টের উপর নির্ভর করতে পারে। (দৈর্ঘ্যের সীমাবদ্ধতার কারণে মন্তব্যের উদাহরণ নীচে অবিরত ছিল)।
গুডেয়ে

উদাহরণস্বরূপ, আমি একটি প্লাগ-ইন ব্যবহার করছি যা ডিফল্ট মানগুলির সাথে কাস্টম ডেটা অ্যাট্রিবিউট রয়েছে: কিছু স্ট্রিং, কিছু বুলিয়ান (আমাকে এই প্রশ্নটি সন্ধান করতে পরিচালিত করছে)। বুলিয়ান ডেটাতে ডিফল্টটি সত্য বা মিথ্যা কিনা তার মিশ্রণ রয়েছে; এটি উপস্থিত রয়েছে কিনা তার মূল্যায়ন পরীক্ষা করছে a মানটি সত্য বা খালি (সত্যের) বা মিথ্যা কিনা তা পরীক্ষা করে দেখছে। কিন্তু খালি জন্য চেক কোডে সুস্পষ্ট; এটি "অন্তর্নির্মিত" নয়। এবং, এটি বুলিয়ান বৈশিষ্ট্য হিসাবে ডেটা-অ্যাবসি = "ডেটা-অ্যাবসি" এর মতো বৈশিষ্ট্যটির নামটি পরীক্ষা করছে না; এটি একটি ত্রুটি ঘটায়।
গুডেয়ে

উত্তর:


52

বৈধ, তবে তারা বুলিয়ান নয়।

কাস্টম ডেটা অ্যাট্রিবিউটস স্পেসিফিকেশন খালি অ্যাট্রিবিউট হ্যান্ডলিংয়ে কোনও পরিবর্তন উল্লেখ করে না, তাই খালি বৈশিষ্ট্য সম্পর্কে সাধারণ নিয়মগুলি এখানে প্রযোজ্য:

কিছু গুণাবলীর কোনও মূল্য ছাড়াই কেবলমাত্র বৈশিষ্ট্যটির নাম সরবরাহ করে নির্দিষ্ট করা যেতে পারে।

নিম্নলিখিত উদাহরণে, disabledখালি অ্যাট্রিবিউট সিনট্যাক্সের সাথে বৈশিষ্ট্যটি দেওয়া হয়:

<input disabled>

নোট করুন যে খালি অ্যাট্রিবিউট সিনট্যাক্সটি নীচের উদাহরণ হিসাবে খালি স্ট্রিংটিকে অ্যাট্রিবিউটটির মান হিসাবে নির্দিষ্ট করার সমান।

<input disabled="">

সুতরাং আপনাকে খালি কাস্টম ডেটা অ্যাট্রিবিউটগুলি ব্যবহার করার অনুমতি দেওয়া হয়েছে তবে এগুলি বুলিয়ান হিসাবে ব্যবহার করার জন্য বিশেষ হ্যান্ডলিং প্রয়োজন।

আপনি যখন একটি খালি বৈশিষ্ট্য অ্যাক্সেস করছেন তখন এর মান ""। যেহেতু এটি একটি মিথ্যা মান, আপনি if (element.dataset.myattr)কোনও বৈশিষ্ট্য উপস্থিত কিনা তা পরীক্ষা করে দেখতে পারবেন না can't

আপনার ব্যবহার করা উচিত element.hasAttribute('myattr')বা if (element.dataset.myattr !== undefined)পরিবর্তে।


লয়েডের উত্তর ভুল। তিনি বুলিয়ান অ্যাট্রিবিউটস মাইক্রোসিন্ট্যাক্সের লিঙ্কের কথা উল্লেখ করেছেন, তবে বৈশিষ্ট্যগুলিকে অনুমানের data-*মধ্যে বুলিয়ান হিসাবে নির্দিষ্ট করা হয়নি।


"নোট করুন যে খালি অ্যাট্রিবিউট সিনট্যাক্সটি নিম্নোক্ত উদাহরণের মতো খালি স্ট্রিংটিকে অ্যাট্রিবিউটের মান হিসাবে নির্দিষ্ট করার সমান" " ঠিক আমি যা অনুসন্ধান করছিলাম। বিশেষত, jQuery এর scriptAttrsসেটিং একটি সাধারণ deferমান পছন্দ করে না , তবে defer: ""কৌশলটি করা উচিত। ধন্যবাদ!
sfarbota

111

হ্যাঁ, পুরোপুরি বৈধ। আপনার ক্ষেত্রে, data-modal-targetএকটি বুলিয়ান বৈশিষ্ট্য উপস্থাপন করবে:

২.৪.২ বুলিয়ান বৈশিষ্ট্য

কোনও উপাদানের উপরে বুলিয়ান বৈশিষ্ট্যের উপস্থিতি প্রকৃত মানকে উপস্থাপন করে এবং বৈশিষ্ট্যের অনুপস্থিতি মিথ্যা মানকে উপস্থাপন করে।


3
নিস! ধন্যবাদ লিঙ্কের জন্য, আমি সাধারণত ধৈর্য Wade যাও w3.org :) মাধ্যমে হবে না
আদম

4
আমি বুলিয়ান বৈশিষ্ট্যটিকে "এটিকে" রূপান্তরিত করে "বাদ দিতে জানি না - মনে হয় যে বুলিয়ান বৈশিষ্ট্যগুলি নির্বিচারে নয়; আমি তাদের একটি তালিকা আছে বলে মনে করি। এটি ব্রাউজার / স্ক্রিপ্ট দ্বারা বুলিয়ান বা কাস্টম ডেটা হিসাবে বিবেচনা করা হয় তা বিবেচনা করে না; তবে এটি স্ক্রিপ্টটি পড়ার উপর নির্ভর করে।
গুডেয়ে

3
আমি বিশ্বাস করি এটি বদলেছে। অবশ্যই আমি আমার কোডটিতে যে উদাহরণটি ব্যবহার করছি তা বুলিয়ান হিসাবে নয় বরং একটি খালি স্ট্রিং হিসাবে বিবেচিত হচ্ছে। সুতরাং, টেস্টিং if ($('p').data('modal-target'))কাজ করবে না: stackoverflow.com/questions/16864999/…
ডেরেক হেন্ডারসন

4
দেখে মনে হচ্ছে এটি সত্য নয় element.dataset.modalTargetখালি স্ট্রিং উত্পাদন করবে যা মিথ্যা (ক্রোম 32) একই ফলাফল jQuery
H1D

20
এটি অনুমানের একটি ভুল ব্যাখ্যা বলে মনে হচ্ছে। অধ্যায় আপনি লিঙ্ক বুলিয়ান বৈশিষ্ট্যাবলী বর্ণনা করে, কিন্তু বলে না কাস্টম ডাটা বৈশিষ্ট্যাবলী যদি পারেন বুলিয়ান বৈশিষ্ট্যাবলী হও।
BoltClock

1

হ্যাঁ, একটি কাস্টম ডেটা অ্যাট্রিবিউটের মান বাদ দিতে বৈধ সিনট্যাক্স।

"বৈশিষ্ট্যগুলি চারটি বিভিন্ন উপায়ে নির্দিষ্ট করা যেতে পারে:

খালি অ্যাট্রিবিউট সিনট্যাক্স কেবলমাত্র বৈশিষ্ট্যের নাম। মান স্পষ্টতই খালি স্ট্রিং। [...] " https://developers.whatwg.org/syntax.html#attributes-0


1

একদিকে, এটি ভ্যালিডেটর 16.5.7 https://omotator.w3.org/nu/#textarea পাস করে :

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8"/>
  <title>a</title>
</head>
<body data-asdf>
</body>
</html>

অন্যদিকে, এইচটিএমএল 5 গুনের data-বৈশিষ্ট্যগুলিতে সেগুলি বুলিয়ান বলে না : https://www.w3.org/TR/html5/dom.html#custom-data-attribute অন্য বুলিয়ানদের ক্ষেত্রে এটি খুব স্পষ্টভাবে বলেছে https://www.w3.org/TR/html5/forms.html#attr-input- চেক করা মত বৈশিষ্ট্যchecked

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.