একটি খালি href বৈধ?


179

আমাদের ওয়েব ডেভেলপারদের মধ্যে একটি ড্রপ ডাউন তালিকা স্টাইল করার জন্য নীচের এইচটিএমএলকে স্থানধারক হিসাবে ব্যবহার করে।

<a href="" class="arrow"></a>

এটি কি অ্যাঙ্কর ট্যাগকে বৈধ বলে মনে করা হয়?

যেহেতু কোনও হারেফের মূল্য নেই তাই এটি আমাদের কয়েকটি লিঙ্ক চেকার প্রতিবেদনে ভাঙা হিসাবে প্রদর্শিত হবে।


10
যদিও এটি IE তে কাজ করে না! ওয়েল এটি আই-তে কাজ করে তবে সম্পূর্ণ ভিন্ন আচরণের সাথে, অনুমানের বিরুদ্ধে। সুতরাং এটি বৈশিষ্ট প্রতি বৈধ, কিন্তু বাস্তবে নয়: (((
ZhongYu

ডকুমেন্ট উপরে নির্দেশিকাতে, কি bayou.io বলেন সম্প্রসারিত ইন্টারনেট লিঙ্ক: stackoverflow.com/questions/7966791/...
Nate

1
হ্যাঁ, IE এর পুরানো সংস্করণগুলিতে একটি খালি href (7/8, ইত্যাদি) খারাপ ফলাফল হতে পারে, যেমন ডিরেক্টরি তালিকা হিসাবে। আপনি যদি গুগল করেন তবে এই বিষয়ে অনেকগুলি ডকুমেন্টেড রয়েছে
রিঙ্গো

উদাহরণস্বরূপ: gtmetrix.com/avoid-empty-src-or-href.html । কেবল পুরানো ব্রাউজারগুলিকে মনে করবেন না এটি বর্তমান আইই, এজ এবং ওয়েবকিট ব্রাউজারগুলিকে প্রভাবিত করে।
রিঙ্গো

উত্তর:


60

যদিও এই প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে ( tl; dr: হ্যাঁ, একটি খালি hrefমান বৈধ) তবে বিদ্যমান কোনও উত্তরই সম্পর্কিত নির্দিষ্টকরণের উল্লেখ করে না।

একটি খালি স্ট্রিং কোনও ইউআরআই হতে পারে না। তবে, hrefবৈশিষ্ট্যটি কেবল ইউআরআইকে মান হিসাবে নেয় না, তবে ইউআরআই রেফারেন্সও দেয়। একটি খালি স্ট্রিং একটি ইউআরআই রেফারেন্স হতে পারে।

এইচটিএমএল 4.01

এইচটিএমএল 4.01 আরএফসি 2396 ব্যবহার করে , যেখানে এটি বিভাগের ৪.২-এ বলা হয়েছে একই দস্তাবেজ তথ্যসূত্র (গা bold় জোর খনি):

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

আরএফসি 2396 আরএফসি 3986 দ্বারা আবশ্যক (যা বর্তমানে আইইটিএফ এর ইউআরআই মান ), যা মূলত একই কথা বলে

HTML5 এর

HTML5 এর ব্যবহার ( কার্যকর URL সম্ভাব্য শূণ্যস্থান দ্বারা বেষ্টিতকার্যকর URL ) W3C এর URL টি বৈশিষ্ট , যা স্থগিত করা হয়েছে। পরিবর্তে WHATWG এর ইউআরএল স্ট্যান্ডার্ড ব্যবহার করা উচিত (শেষ বিভাগটি দেখুন)।

এইচটিএমএল 5.1

এইচটিএমএল 5.1 ব্যবহার ( কার্যকর URL সম্ভাব্য শূণ্যস্থান দ্বারা বেষ্টিতকার্যকর URL ) WHATWG URL টি স্ট্যান্ডার্ড (পরবর্তী অধ্যায় দেখুন)।

WHATWG এইচটিএমএল

WHATWG- র এইচটিএমএল ব্যবহার করে ( সম্ভাব্য জায়গাগুলি ঘিরে বৈধ URL টি ) WHATWG এর URL স্ট্যান্ডার্ড থেকে বৈধ ইউআরএল স্ট্রিংয়ের সংজ্ঞা , যেখানে এটি বলে যে এটি কোনও আপেক্ষিক-URL- সহ খণ্ডের স্ট্রিং হতে পারে, যা কমপক্ষে একটি আপেক্ষিক-URL স্ট্রিং হতে হবে , যা কোনও পাথ-আপেক্ষিক-স্কিম-কম-ইউআরএল স্ট্রিং হতে পারে , যা কোনও পাথ-আপেক্ষিক-ইউআরএল স্ট্রিং যা কোনও স্কিম স্ট্রিং দ্বারা শুরু হয় না এবং এর সংজ্ঞাটি বলে (বোল্ড জোর আমার)::

একটি পাথ-আপেক্ষিক-ইউআরএল স্ট্রিং অবশ্যই শূন্য বা আরও বেশি ইউআরএল-পাথ-সেগমেন্টের স্ট্রিংগুলি হতে হবে, একে অপরকে ইউ + 002F (/) দ্বারা পৃথক করা উচিত এবং ইউ + 002F (/) দিয়ে শুরু করা উচিত নয়।


184

এটা বৈধ।

যাইহোক, প্রমাণ অভ্যাস ব্যবহার করা href="#"কখনও কখনও বা href="javascript:;"


23
আরএফসি 2396 তে বর্ণিত হিসাবে: একটি ইউআরআই রেফারেন্স যাতে কোনও ইউআরআই থাকে না তা বর্তমান নথির একটি রেফারেন্স। অন্য কথায়, কোনও নথির মধ্যে একটি খালি ইউআরআই রেফারেন্সটি সেই নথির শুরুতে একটি রেফারেন্স হিসাবে ব্যাখ্যা করা হয়
অক্টোবর

32
আমি যখন ক্লিক করি তখন href="#"IE এর পৃষ্ঠার শীর্ষে ফোকাস দিন, তাই আমি আরও href="javascript:;"ভাল
ডেকার্ড

32
href = "#" একটি অ্যান্টি-প্যাটার্ন। এটি ব্রাউজারের ইতিহাসে একটি অতিরিক্ত এন্ট্রি যুক্ত করে এবং কিছু ক্ষেত্রে ব্রাউজারটিকে শীর্ষে স্ক্রোল করে তোলে, আপনি যদি href বৈশিষ্ট্যটি ব্যবহার না করেন তবে আপনি এটি ছেড়ে দিতে পারেন। এটি ডিফল্ট হবে "" এবং তাই যদি প্রতিরোধ না করা হয় তবে পৃষ্ঠাটি পুনরায় লোড করুন।
টুশ

16
@ তোশ, না, আমি নিশ্চিত আপনি যদি এইচআরএফ বৈশিষ্ট্যটি ছেড়ে দেন তবে <a> উপাদানটি কোনও লিঙ্ক হিসাবে স্টাইলযুক্ত নয়, মনোনিবেশযোগ্য নয় এবং <a href = "" হিসাবে কোনও লিঙ্ক তৈরি করে না > বা <a href> করে। যদি এটি আপনার পক্ষে কাজ করে তবে আপনি কি কোনও জেএসফিডেল এটি ভাগ করে নিতে পারবেন?
গুই প্রাগ

6
@ তোশ, আপনি কি মজাদার জানেন? স্পষ্টতই এইচটিএমএল 5 এর পরে, গুণটি বাদ দিয়ে সেইভাবে কাজ করা উচিত, w3.org/TR/html5/text-level-semantics.html#the-a-element দেখুন (নীচে উত্তরটি জমা দেওয়ার জন্য ধন্যবাদ অর্ধেক।) আপাতদৃষ্টিতে এটি হয়নি বিক্রেতারা এখনও প্রয়োগ করেছেন এবং যেহেতু এটি এখনও কেবলমাত্র প্রার্থীর সুপারিশ, এটি চূড়ান্ত মানদণ্ডে রাখা হবে কিনা বা বিক্রেতারা এর আগে মেনে চলেন কিনা তা বলা শক্ত।
গুয় প্রি

115

অন্যরা যেমন বলেছে, এটি বৈধ।

প্রতিটি পদ্ধতির কিছু ডাউনসাইড রয়েছে যদিও:

href="#" ব্রাউজারের ইতিহাসে একটি অতিরিক্ত এন্ট্রি যুক্ত করে (যা বিরক্ত হয় যখন উদ্বৃত্ত ব্যাক-বোতামিং)।

href="" পৃষ্ঠাটি পুনরায় লোড করে

href="javascript:;" কোনও সমস্যা আছে বলে মনে হচ্ছে না (অগোছালো এবং অর্থহীন দেখাচ্ছে ব্যতীত) - কেউ কি জানেন?


22
আর একটি আকর্ষণীয় হ'রেফ = "//: 0", যা সার্ভারের কাছে কোনও অনুরোধ জানাবে না বা কোনও ইতিহাস ছাড়বে না।
ডায়াডেলিক

2
//: 0 আমার কিছু চিত্র Chrome এ লোড করতে ব্যর্থ করেছে। ক্রোম একটি বাতিল আদেশ প্রাপ্তি হিসাবে ব্যাখ্যা করে।
ডেভিড গ্রেনিয়ার

5
সূরা: "জাভাস্ক্রিপ্ট :;" দু'জনে অ্যান্ড্রয়েডের আইওএস ওয়েবভিউতে জিনিসপত্র তৈরির জন্য আমার যা প্রয়োজন ছিল তা ছিল
dumazy

2
আই ডকুমেন্টের উপরের ডিরেক্টরিটিতে লিঙ্ক করে: স্ট্যাকওভারফ্লো.com
নট

1
আমি এটি পরীক্ষা করেছি না, তবে আমি সন্দেহ করি যে href = "জাভাস্ক্রিপ্ট :;" ইনলাইন জাভাস্ক্রিপ্ট নিষ্ক্রিয় করে এমন সামগ্রী সুরক্ষা নীতি লঙ্ঘন করবে। আপনি যদি এই নীতিটি চালু করার মনস্থ করেন, তবে আমি বিকল্পগুলির মধ্যে একটি ব্যবহার করব।
ভাল

60

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

সুতরাং নিম্নলিখিত সম্পূর্ণরূপে বৈধ হতে পারে:

<a class="arrow">Link content</a>

স্পষ্টভাবে একটি নাল-প্রভাব href বৈশিষ্ট্য যুক্ত করা আরও ভাল

<a href="javascript:void(0);" class="arrow">Link content</a>

সমস্ত ব্যবহারকারীর পূর্ণ সমর্থনের জন্য, আপনি যদি কোনও চিত্র রেন্ডার করতে CSS সহ বর্গ ব্যবহার করে থাকেন তবে আপনার কিছু টেক্সট সামগ্রীও অন্তর্ভুক্ত করা উচিত, যেমন শিরোনাম বৈশিষ্ট্যটি যা চলছে তার একটি পাঠ্য বিবরণ সরবরাহ করতে।

<a href="javascript:void(0);" class="arrow" title="Go to linked content">Link content</a>

1
উল্লেখ করার জন্য ধন্যবাদ যে বাদ দেওয়া hrefঅ্যাক্সেসিবিলিটি ইন্টারফেসের সাথে বিশৃঙ্খলা করবে।
ড্যানিয়েল সোকলোভস্কি

1
আমি একটি অ্যাক্সেসিবিলিটি দৃষ্টিকোণ থেকে - যুক্ত করেছিলাম - যে hrefকোনও আপেক্ষিক / পরম পাথের চেয়ে অন্য যে কোনও কিছুতে মান সেট করা স্ক্রিন রিডার সমস্যার কারণ হতে পারে। এই ইস্যুটির জন্য হ্যাশ / পাউন্ডের প্রতীকটিকে কার্যক্ষম হিসাবে ব্যবহার করা থেকে বিরত থাকুন কারণ এটি এর জন্য নয়। স্ক্রিন পাঠকরা (বর্তমানে ভয়েসওভার করেন) আপনার লিঙ্কটিকে একটি খণ্ড সনাক্তকারী হিসাবে চিহ্নিত করতে পারে (বর্তমান পৃষ্ঠার কোথাও লিংক) এবং মানদণ্ডের দৃষ্টিকোণ থেকে বৈধ is দেখতে w3.org/2001/tag/2011/01/HashInURI-20110115#NakedHash
মিশেল Hébert

27

বর্তমান এইচটিএমএল 5 খসড়াও href বৈশিষ্ট্যটিকে সম্পূর্ণরূপে বাদ দিতে দেয়।

যদি কোনও উপাদানের কোনও href বৈশিষ্ট্য না থাকে, তবে উপাদানটি কোনও স্থানধারককে উপস্থাপন করে যেখানে লিঙ্কটি অন্যথায় স্থাপন করা হতে পারে, যদি এটি সম্পর্কিত হত।

আপনার প্রশ্নের উত্তর দিতে: হ্যাঁ এটি বৈধ।


6
হ্যাঁ, তবে - কোনও <a>উপাদান নেই hrefএমন কিছু ব্রাউজারে সুনির্দিষ্টভাবে স্টাইল করা হয়। উদাহরণস্বরূপ, ": হোভার" শৈলীগুলি ক্রোমে (এবং অন্যান্য উদ্ভট জিনিসগুলি) কাজ করে না
অ্যালেক্স

একটি <a>ট্যাগ ছাড়া অন্য কোনও কিছুhref উপস্থাপন করে , কোনও লিঙ্ক নয় (traditionতিহ্যগতভাবে অ্যাঙ্কর)। এছাড়াও, একটি alচ্ছিক বৈশিষ্ট্য এবং একটি খালি থাকতে পারে এমন একটি বৈশিষ্ট্যের মধ্যে পার্থক্য রয়েছে।
কোবি

19

প্রকৃতপক্ষে, আপনি এটি খালি রাখতে পারেন (ডাব্লু 3 বৈধকরণকারী অভিযোগ করেন না)।

ধারণাটি আরও একধাপ এগিয়ে নিয়ে যাওয়া: = "" ছেড়ে দিন। এর সুবিধাটি হ'ল লিঙ্কটি বর্তমান পৃষ্ঠায় অ্যাঙ্কর হিসাবে বিবেচিত হয় না।

<a href>sth</a>

যদিও: <a href></a>একটি সুনির্দিষ্ট মান দেখা ছাড়া অ্যাট্রিবিউট সূরা। আইটি 7 ​​দ্বারা বৈশিষ্ট্যটি বাদ দেওয়া যেতে পারে।
সি 24 ডাব্লু

1
আমি এই সমাধানটিও পছন্দ করি। আই 7 এর আচরণ ব্যতীত আপনি অন্য কোনও অসুবিধাগুলি জানেন?
rinat.io

এটি অবৈধ সিনট্যাক্স। অনুমান অনুসারে "[খালি এ্যাট্রিবিউট] বাক্য গঠনটি কেবল বুলিয়ান বৈশিষ্ট্যের জন্য অনুমোদিত” "
রবার্ট সিমার

9

যদিও ডাব্লু 3 এর বৈধকারক একটি খালি hrefবৈশিষ্ট্য সম্পর্কে অভিযোগ না জানাতে পারে , বর্তমান এইচটিএমএল 5 ওয়ার্কিং ড্রাফ্ট নির্দিষ্ট করে:

hrefউপর অ্যাট্রিবিউট aএবং areaউপাদানের যে একটি বৈধ URL হল একটি মান থাকা আবশ্যক সম্ভাব্য শূণ্যস্থান দ্বারা বেষ্টিত।

একটি বৈধ URL হল একটি URL যা URL মানের সাথে সম্মতি দেয় । এখন ইউআরএল স্ট্যান্ডার্ড আপনার মাথাটি পেতে কিছুটা বিভ্রান্ত করছে, তবে কোথাও কোথাও বলা হয় নি যে কোনও URL টি খালি স্ট্রিং হতে পারে।

... যার মানে একটি খালি স্ট্রিং না একটি কার্যকর URL।

এইচটিএমএল 5 এর কার্যকরী খসড়াটি অবশ্য জানাতে:

দ্রষ্টব্য: উপর অ্যাট্রিবিউট এবং উপাদানের প্রয়োজন হয় না ; যখন এই উপাদানগুলির বৈশিষ্ট্য না থাকে তারা হাইপারলিঙ্ক তৈরি করে না।hrefaareahref

এর অর্থ আমরা কেবলমাত্র hrefগুনটি পুরোপুরি বাদ দিতে পারি :

<a class="arrow"></a>

আপনার উদ্দেশ্য যে এই হয়, তাহলে hrefaউপাদান এখনো কীবোর্ড interraction প্রয়োজন হবে, আপনি একটি বরাদ্দ স্বাভাবিক রুট নামা করতে হবে roleএবং tabindexআপনার স্বাভাবিক ক্লিক করুন / keydown হ্যান্ডেলার পাশাপাশি:

<a class="arrow" role="button" tab-index="0"></a>

প্রকৃতপক্ষে. দুর্ভাগ্যক্রমে, আপনি যেমন উদ্ধৃত করেছেন, সেগুলি ছেড়ে দেওয়ার hrefফলে এটি হাইপারলিংক হয় না, যা onclickকীবোর্ড ব্যবহারকারীদের জন্য কার্যকারিতা অ্যাক্সেসযোগ্য করে তুলেছে।
এআইজি

7

সাবধানতার একটি শব্দ:

আমার অভিজ্ঞতায়, hrefবৈশিষ্ট্যটি বাদ দেওয়া অ্যাক্সেসযোগ্যতার জন্য সমস্যা সৃষ্টি করে কারণ কীবোর্ড নেভিগেশন এটিকে উপেক্ষা করবে এবং href উপস্থিত থাকাকালীন কখনই এটির মতো মনোযোগ দেবে না। ট্যাবিনডেক্সে আপনার উপাদানটিকে ম্যানুয়ালি অন্তর্ভুক্ত করা তার প্রায় এক উপায়।


3

এটি বৈধ তবে উপরের ক্রিক বলেছে 'প্রতিটি পদ্ধতির কিছুটা ডাউনসাইড রয়েছে'

আপনি যদি কোনও এজ্যাক্সকে কোনও ট্যাগের মাধ্যমে কল দিচ্ছেন তবে href = "" এভাবে ছেড়ে দিন পৃষ্ঠাটি পুনরায় লোড হবে এবং এজাক্স কোডটি কখনও কল হবে না ...

এই চিন্তা ভাগ করে নেওয়া ভাল হবে পেয়েছি


2

<a href="#" class="arrow">পরিবর্তে করার চেষ্টা করুন । (তীক্ষ্ণ #চরিত্রটি নোট করুন )।

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