এইচটিএমএল ট্যাগগুলিতে অ-মানক বৈশিষ্ট্য। ভাল জিনিস? খারাপ জিনিস? আপনার চিন্তাগুলো?


92

এইচটিএমএল (বা সম্ভবত কেবল এক্সএইচটিএমএল?) যখন ট্যাগগুলিতে অ-মানক বৈশিষ্ট্যের কথা আসে তখন তুলনামূলকভাবে কঠোর। যদি সেগুলি অনুমানের অংশ না হয় তবে আপনার কোডটি অ-অনুগত।

মানহীন বৈশিষ্ট্যগুলি জাভাস্ক্রিপ্টে মেটা-ডেটা বরাবর পাস করার জন্য মোটামুটি কার্যকর হতে পারে। উদাহরণস্বরূপ, যদি কোনও লিঙ্কটি একটি পপআপ দেখানোর জন্য মনে করা হয় তবে আপনি একটি বৈশিষ্ট্যে পপআপের নামটি সেট করতে পারেন:

<a href="#null" class="popup" title="See the Popup!" 
   popup_title="Title for My Popup">click me</a>

বিকল্পভাবে, আপনি প্যানআপের জন্য শিরোনামটি একটি স্প্যানের মতো কোনও লুকানো উপাদানটিতে সঞ্চয় করতে পারেন:

<style>
    .popup .title { display: none; }
</style>
<a href="#null" title="See the Popup!" class="popup">
    click me
    <span class="title">Title for My Popup</span>
</a>

আমি পছন্দসই পদ্ধতি হওয়া উচিত তবে আমি ছেঁড়া হয়ে গেছি। প্রথম পদ্ধতিটি আরও সংক্ষিপ্ত এবং, আমি অনুমান করছি, অনুসন্ধান ইঞ্জিন এবং স্ক্রিন পাঠকদের সাথে তেমন স্ক্রু দেয় না। বিপরীতে, দ্বিতীয় বিকল্পটি প্রচুর পরিমাণে ডেটা সঞ্চয় করা সহজ করে এবং এইভাবে, আরও বহুমুখী। এটি মান সম্মত।

এই সম্প্রদায়ের চিন্তাভাবনাগুলি কী তা আমি জানতে আগ্রহী। আপনি কীভাবে এমন পরিস্থিতি পরিচালনা করবেন? প্রথম পদ্ধতির সরলতা কি সম্ভাব্য ডাউনসাইডকে ছাড়িয়ে যায় (যদি থাকে তবে)?


4
এগুলিকে "সম্প্রসারিত" বৈশিষ্ট্য বলা হয় - আপনি যদি তাদের সম্পর্কে আরও জানতে চান তবে।
জেসন বুটিং

4
আফাইক, জাভাস্ক্রিপ্ট ব্যবহার করে রানটাইম এ এক্সটেন্ডো বৈশিষ্ট্য সেট করা হয়। তারা নিজেই এক্সএইচটিএমএল এর অংশ নন
ফিলিপ লেবার্ট

উত্তর:


50

আমি প্রস্তাবিত এইচটিএমএল 5 সমাধান ( data-উপসর্গযুক্ত বৈশিষ্ট্য) এর একটি বড় অনুরাগী । সম্পাদনা: আমি যুক্ত করব যে কাস্টম বৈশিষ্ট্য ব্যবহারের জন্য সম্ভবত আরও ভাল উদাহরণ রয়েছে। উদাহরণস্বরূপ, কোনও কাস্টম অ্যাপ্লিকেশন এমন ডেটা ব্যবহার করবে যা মানক বৈশিষ্ট্যের কোনও অ্যানালগ নেই (উদাহরণস্বরূপ ইভেন্ট হ্যান্ডলারের জন্য কাস্টমাইজেশন এমন কোনও কিছুর উপর ভিত্তি করে যা ক্লাসের নাম বা আইডিতে প্রকাশ করা যায় না)।


4
আমি এখনই এই সমাধানটি অনুসরণ করার প্রবণতা করি - এটি মানদণ্ডগুলির সাথে সামঞ্জস্যপূর্ণ না হলেও।
টম রিটার

4
আমি সর্বদা এটি এড়িয়ে চলেছি, যেহেতু এটি বৈধ নয়। তবে এখন আমি এটি সম্পর্কে চিন্তাভাবনা করে, ক্লাস = "" অ্যাট্রিবিউটের (জেকারি মেটাডাটার মতো) সমস্ত কিছুর ক্র্যামিং করা অবশ্যই এর চেয়ে ভাল নয়। <এইচটিএমএল 5 জমিটিতে এই পদ্ধতির কোনও বাস্তবিক, বাস্তব-বিশ্বের অসুবিধা আছে কি? মূলত - এখন কোন সমস্যা দেখা দেবে? দেখে মনে হচ্ছে এটি আদর্শ নয়, তবে এর কোনও পার্শ্ব প্রতিক্রিয়া নেই যা আমি ভাবতে পারি।
রকেটমনকি

@ রকেটমনকিগুলি আমি নিশ্চিত নই, তবে আমি মনে করি কোনও শ্রেণীর বৈশিষ্ট্যের ভিতরে ডেটা ব্যবহার করা ব্রাউজারকে কোনও উপাদানকে অপরিজ্ঞাত সিএসএস বিধি প্রয়োগ করার চেষ্টা করতে বাধ্য করতে পারে, এটি কিছু সমস্যা বা পারফরম্যান্স সমস্যার কারণ হতে পারে। আবার আমি নিশ্চিত নই।
ভিটিম.ইস

@ ভিটিম.ইউস, যদি এমন পারফরম্যান্স হিট হয় তবে তা নগণ্য হবে। ব্রাউজারগুলি এই ধরণের জিনিসটিতে বেশ দক্ষ; আসলে স্টাইল প্রয়োগ করার হিট আরও বেশি হবে। এবং মনে রাখবেন, ক্লাসগুলি স্টাইলিংয়ের উদ্দেশ্যে উদ্ভাবিত কিছু নয়, এগুলি অন্য বৈশিষ্ট্যের মতো কেবল উপাদান ডেটা। কোনও বৈশিষ্ট্য বাছাইকারীতে ব্যবহার করা যেতে পারে, সুতরাং যদি এমন কোনও পারফরম্যান্স হিট হয় data-তবে এটি উপাদানটিতে আপনি যুক্ত করা কোনও আধিপত্য (উপসর্গ সহ ) আক্ষরিকভাবে প্রযোজ্য ।
চোখের পলকহীনতা

@ আইলিডলেসনেস এটি একটি ভাল যুক্তি, আমাকে সম্মত হতে হবে, এমনকি আমি জাভাস্ক্রিপ্টের অভ্যন্তরে সঠিকভাবে ডেটা স্ট্রাকচার ব্যবহার করেছি আমি এমন কিছু মামলা খুঁজে পেয়েছি যে ডেটা অ্যাট্রিবিউট ব্যবহার করা উপযুক্ত। আমি রকেটমোনেকিজের মতো jquery এড়ানোর জন্য বলেন। মাইক্রো অপ্টিমাইজেশন সম্পর্কে আমার সত্যিই বিরক্ত হওয়া বন্ধ করা উচিত।
ভিটিম.ইস

27

কাস্টম বৈশিষ্ট্যগুলি ক্লায়েন্টের পক্ষে অতিরিক্ত ডেটা বহন করার একটি সুবিধাজনক উপায় সরবরাহ করে। ডোজো টুলকিট এটি নিয়মিত করে চলেছে এবং এটি চিহ্নিত করা হয়েছে ( ডাবোঙ্কিং ডোজো টুলকিট পুরাণ )

কাস্টম বৈশিষ্ট্যগুলি সর্বদা বৈধ এইচটিএমএল হয়েছে, কোনও ডিটিডি-র বিরুদ্ধে পরীক্ষার সময় সেগুলি বৈধ হয় না। [...] এইচটিএমএল স্পেসিফিকেশনটিতে বলা হয়েছে যে স্বীকৃতিপ্রাপ্ত নয় এমন কোনও বৈশিষ্ট্য ব্যবহারকারী এজেন্টগুলিতে এইচটিএমএল রেন্ডারিং ইঞ্জিন দ্বারা উপেক্ষা করা হবে এবং উন্নয়নের স্বাচ্ছন্দ্যে উন্নতি করতে ডোজো বিকল্পভাবে এর সদ্ব্যবহার করে।


9

আর একটি বিকল্প জাভাস্ক্রিপ্টে এর মতো কিছু সংজ্ঞায়িত করা হবে:

<script type="text/javascript">
var link_titles = {link1: "Title 1", link2: "Title 2"};
</script>

তারপরে আপনি এটি আপনার জাভাস্ক্রিপ্ট কোডটিতে পরে ব্যবহার করতে পারেন, ধরে নিবেন আপনার লিঙ্কটির একটি আইডি রয়েছে যা এই হ্যাশটেবলের আইডির সাথে সম্পর্কিত।

এটির অন্য দুটি পদ্ধতির অসুবিধা নেই: কোনও মানহীন গুণাবলী বা কুৎসিত গোপন স্প্যান নেই।

অসুবিধাটি হ'ল এটি আপনার উদাহরণের মতো সাধারণ জিনিসগুলির জন্য কিছুটা ওভারকিলের পরিমাণ হতে পারে। তবে আরও জটিল পরিস্থিতিগুলির জন্য, যেখানে আপনার কাছে আরও ডেটা পাস করার আছে, এটি একটি ভাল পছন্দ। বিশেষত বিবেচনা করে যে ডেটাটি JSON হিসাবে পাস হচ্ছে তাই আপনি জটিল বিষয়গুলি সহজেই পাস করতে পারবেন।

এছাড়াও, আপনি ডেটা ফর্ম্যাট করা থেকে আলাদা রাখেন যা রক্ষণাবেক্ষণের জন্য ভাল thing

এমনকি আপনার এর মতো কিছু থাকতে পারে (যা আপনি অন্যান্য পদ্ধতির সাথে সত্যই করতে পারবেন না):

var poi_types = {1: "City", 2: "Restaurant"};
var poi = {1: {lat: X, lng: Y, name: "Beijing", type: 1}, 2: {lat: A, lng: B, name: "Hatsune", type: 2}};

...

<a id="poi-2" href="/poi/2/">Hatsune</a>

এবং যেহেতু আপনি সম্ভবত কিছু সার্ভার-সাইড প্রোগ্রামিং ভাষা ব্যবহার করেন তাই এই হ্যাশ টেবিলটি গতিশীলরূপে উত্পন্ন করার জন্য তুচ্ছ হওয়া উচিত (কেবল এটি জেএসএনে সিরিয়ালাইজ করুন এবং এটি পৃষ্ঠার শিরোনাম বিভাগে থুতু দিন)।


4

ভাল এই ক্ষেত্রে, সর্বোত্তম সমাধান হয়

<a href="#" alt="" title="Title of My Pop-up">click</a>

এবং শিরোনাম বৈশিষ্ট্য ব্যবহার করে।

কখনও কখনও আমি যদি আমার সত্যিই এটির প্রয়োজন হয় তা অনুভব করি। তবে খুব কমই, এবং শুধুমাত্র ভাল কারণেই।

সম্পাদনা: কেন -1, তা নিশ্চিত নয় তবে আমি আপনাকে ইঙ্গিত করছিলাম যে কখনও কখনও আপনি ভাবেন যে আপনার অনুপাতটি ভাঙতে হবে, যখন আপনি করবেন না।


4

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


2

আপনি অ্যাঙ্কর উপাদান ভিতরে লুকানো ইনপুট উপাদান বাসা করতে পারে

<a id="anchor_id">
  <input type="hidden" class="articleid" value="5">
  Link text here
</a>

তারপরে আপনি সহজেই ডেটা টেনে আনতে পারবেন

$('#anchor_id .articleid').val()

4
হ্যাঁ, কিন্তু সবচেয়ে ভালো উপায় ব্যবহার করা: <input type="hidden" title="article_id" value="5" />। ক্লাসটি সিএসএসের জন্য যেহেতু শ্রেণি শৈলীর তথ্য না থাকলে প্রকৃতপক্ষে অবৈধ কোড দেয়। এমনকি জেএস বা সিএসএস বন্ধ করা থাকলেও তথ্য গোপন থাকবে।
ইয়েতি

4
@ ইয়েতি, শ্রেণি সিএসএসের জন্য কিছু নয় বা এটি অবৈধ নয় invalid এটি অন্যান্য বৈশিষ্ট্যের মতো উপাদানটিতে কেবলমাত্র ডেটা। সিএসএসের সাথে সংযুক্তি হ'ল এটি একটি ভাল-সমর্থিত নির্বাচনকারী।
চোখের পলকহীনতা

0

শেষ পর্যন্ত আমার সমাধানটি হ'ল আইডি ট্যাগে অতিরিক্ত ডেটা কোনও ধরণের ডিলিমিটার দ্বারা আলাদা করে রাখা হয়েছিল (একটি আন্ডারস্কোরটি একটি স্থান, দুটি সেই আর্গের শেষে), দ্বিতীয় আরগটিতে একটি আইডি রয়েছে:

<a href="#" class="article" id="Title_of_My_Pop-up__47">click</a>

কুরুচিপূর্ণ, এবং এটি ধরে নিয়েছে যে আপনি ইতিমধ্যে অন্য কোনও কিছুর জন্য আইডি ট্যাগটি ব্যবহার করছেন না, তবে এটি প্রতিটি ব্রাউজার জুড়েই উপযুক্ত।


-1

আপনার উদাহরণে আমার ব্যক্তিগত অনুভূতি হ'ল স্প্যান রুটটি আরও উপযুক্ত, কারণ এটি এক্সএইচটিএমএল স্পেসিফিকেশনের মান পূরণ করে। যাইহোক, আমি কাস্টম বৈশিষ্ট্যের জন্য একটি অধ্যায় দেখতে পারি, তবে আমি মনে করি যে তারা বিভ্রান্তির একটি স্তর যুক্ত করে যা প্রয়োজন হয় না।


10
যদিও স্প্যান রুট ট্যাগটির অপব্যবহার। এটি বৈধতা মান পূরণ করতে পারে, কিন্তু এটি শব্দার্থক মান পূরণ করে না।
শেজেজোজ

-1

আমি এটির উপর দিয়ে আমার মস্তিষ্ককেও তাকাচ্ছি। আমি অ-মানক বৈশিষ্ট্যগুলির পাঠযোগ্যতা পছন্দ করি তবে এটি আমার মান পছন্দ করে না যে এটি স্ট্যান্ডার্ডটি ভেঙে দেবে। লুকানো স্প্যান উদাহরণটি অনুগত, তবে এটি খুব পঠনযোগ্য নয়। এই সম্পর্কে কি:

<a href="#" alt="" title="" rel="{popup_title:'Title of My Pop-up'}">click</a>

এখানে কোডটি খুব পঠনযোগ্য, কারণ জেএসএনের কী / মান জোড় স্বরলিপি। আপনি বলতে পারেন যে এটি মেটা ডেটা যা কেবল এটি দেখে লিঙ্কের সাথে সম্পর্কিত। হাইজ্যাক করার পরে আমি কেবল "ত্রুটি" দেখেছি এর ত্রুটিটি হ'ল এটি জটিল বস্তুর জন্য অগোছালো হয়ে উঠবে। আমি উপরে উল্লিখিত "ডেটা-" উপসর্গযুক্ত বৈশিষ্ট্যের সেই ধারণাটি সত্যিই পছন্দ করি। বর্তমান কোনও ব্রাউজার কি এটি সমর্থন করে?

এখানে আরও কিছু ভাবার কথা। SEO এর সাথে কমপ্লায়েন্ট কোডটি কতটা প্রভাব ফেলবে না?


7
Rel বৈশিষ্ট্যটি বর্তমান পৃষ্ঠা এবং লিঙ্কযুক্ত সংস্থানগুলির মধ্যে সম্পর্কের বর্ণনা দেয়। এট্রিবিউটটি এটিকে জেনেরিক নয় "আপনার পছন্দ মতো ডেটা সঞ্চয় করুন"। সুতরাং এটি ভয়াবহ।
কুইন্টিন

4
বর্তমান কোনও ব্রাউজার কি এটি সমর্থন করে? - সমর্থন করার কি আছে? ব্রাউজারগুলি ইতিমধ্যে নীতি অনুসরণকারী কোড সহ্য করতে পারে। এটি নতুন এইচটিএমএল 5 এর অংশ বলে বিবেচনা করে, ডেটা-অ্যাট্রিবিউট যুক্ত করার মতো ভয় পাওয়ার কিছু নেই যেহেতু আপনি অন্য কোনও কাস্টম বৈশিষ্ট্য যুক্ত করবেন।
স্লাভিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.