سؤال

عندما يريد أحد أن أشير إلى بعض جزء من صفحة ويب مع "http://example.com/#foo"طريقة ، ينبغي للمرء أن استخدام

<h1><a name="foo"/>Foo Title</h1>

أو

<h1 id="foo">Foo Title</h1>

وكلاهما العمل ، على قدم المساواة ، أو هل لديهم الدلالي الاختلافات ؟

هل كانت مفيدة؟

المحلول

وفقا HTML 5 مواصفات ، 5.9.8 التنقل إلى جزء معرف:

مستندات HTML (النص/html نوع MIME) التالية تجهيز نموذج يجب اتباعها لتحديد ما ورد جزء من المستند.

  1. Parse URL ، والسماح fragid يكون <fragment> مكون من URL.
  2. إذا fragid هو سلسلة فارغة ، ثم أشار إلى جزء من هذه الوثيقة هو أعلى المستند.
  3. إذا كان هناك عنصر في دوم غير معرف بالضبط يساوي fragid ، ثم أول عنصر من هذه العناصر في شجرة النظام هو مبين جزء من الوثيقة ؛ تتوقف الخوارزمية هنا.
  4. إذا كان هناك a عنصر DOM التي لديها سمة اسم القيمة التي تساوي بالضبط fragid ، ثم أول عنصر من هذه العناصر في شجرة النظام هو مبين جزء من الوثيقة ؛ تتوقف الخوارزمية هنا.
  5. وإلا لا يوجد أشار إلى جزء من الوثيقة.

لذا سوف نبحث عن id="foo", ثم سوف تتبع name="foo"

تحرير:كما أشار @hsivonen في HTML5 a عنصر ليس له اسم السمة.بيد أن القواعد المذكورة أعلاه لا تزال تنطبق على غيرها من اسمه العناصر.

نصائح أخرى

ويجب عدم استخدام <h1><a name="foo"/>Foo Title</h1> في أي نكهة HTML شغل منصب text/html، لأنه لا يدعم بناء الجملة عنصر فارغ XML في text/html. ومع ذلك، <h1><a name="foo">Foo Title</a></h1> على ما يرام في HTML4. لا يصح في HTML5 بصيغتها الحالية.

و<h1 id="foo">Foo Title</h1> على ما يرام في كل HTML4 وHTML5. هذا لن يعمل في نتسكيب 4، ولكن ربما كنت سوف تستخدم اكثر من عشرة من الميزات الأخرى التي لا تعمل في نتسكيب 4.

وأود أن أقول إذا كنت على وشك أن تربط إلى تلك المنطقة في الصفحة ... مثل page.html # فو فو وعنوانها ليس الرابط الذي يجب أن تستخدم:

<h1 id="foo">Foo Title</h1>

إذا بدلا من ذلك وضع إشارة <a> حوله سوف يتأثر العنوان الخاص بك عن طريق <a> CSS معين داخل موقع الويب الخاص بك. انها مجرد ترميز إضافية، ويجب أن لا حاجة إليها. سأكون في غاية يوصي وضع هوية على العنوان، وليس فقط لأنها أفضل تشكيلها، ولكنها تسمح لك إما العنوان الذي يعترض في جافا سكريبت أو CSS.

ويكيبيديا يجعل الاستخدام المكثف من هذه الميزة مثل هذا:

<a href="#History">[...]</a>
<span class="mw-headline" id="History">History</span>

ويكيبيديا تعمل من أجل الجميع, لذلك أود أن أشعر بالأمان الخلاف مع هذا النموذج.

لا تنسى أيضا, يمكنك استخدام هذا ليس فقط ولكن يمتد مع divs أو حتى خلايا الجدول ، ثم لديك الوصول إلى :الهدف من الدرجة الزائفة على العنصر.فقط انتبه لا تغيير عرض مثل نص عريض, السبب الذي يتحرك حول المحتوى الذي يبعث على القلق.

اسمه المراسي - تصويتي هو تجنب:

  • "أسماء معرفات في نفس مساحة..." - السمات اثنين مع نفس مساحة الاسم هو مجرد مجنون.دعنا نقول فقط مستنكر بالفعل.
  • "المراسي العناصر دون href السمة" - مرة أخرى ، طبيعة عنصر (ارتباط تشعبي أو لا) يتم تعريفه من خلال وجود السمة?!مزدوجة مجنون.الحس السليم يقول أن تجنب ذلك تماما.
  • إذا كنت من أي وقت مضى نمط مرساة دون الزائفة فئة التصميم ينطبق على كل منهما.في CSS3 يمكنك الحصول على حول هذا مع السمة محددات (أو نفس التصميم لكل pseudoclass), ولكن لا يزال هو الحل.هذا عادة لا تأتي لأنك تختار الألوان في الدرجة الزائفة ، التسطير كونها موجودة بشكل افتراضي إلا أنه يجعل الشعور لإزالة الذي يجعل من نفسه كما نص آخر.ولكن هل سبق لك أن تقرر لجعل الروابط جريئة ، فإنه سوف يسبب المتاعب.
  • Netscape 4 قد لا تدعم ميزة معرف ولكن لا يزال غير معروف السمة لن يسبب أي مشكلة.هذا ما يسمى التوافق بالنسبة لي.
<h1 id="foo">Foo Title</h1>

وهذا ما ينبغي أن تستخدم. لا تستخدم مرساة إلا إذا كنت تريد الارتباط.

رؤساء جافا سكريبت المستخدمين: جميع معرفات تصبح المتغيرات العالمية تحت النافذة.

<h1 id="foo">Foo Title</h1>

مجرد خلق شبيبة العالمية:

window.foo

قيمة window.foo سوف يكون HTMLElement عن h1.

إلا إذا كنت يمكن أن تضمن جميع القيم المستخدمة في id سمات آمنة ، قد تفضل التمسك name:

<h1 name="foo">Foo Title</h1>
سوف

وطريقة ID لا تعمل على المتصفحات القديمة، سيتم إيقاف طريقة اسم مذيع في الإصدارات HTML أحدث ... كنت اذهب مع معرف.

لا يوجد الدلالي الاختلاف ؛ الاتجاه في المعايير تجاه استخدام id بدلا من name.ومع ذلك ، هناك الاختلافات التي قد تؤدي واحد تفضل name في بعض الحالات.HTML 4.01 مواصفات العروض التالية تلميحات:

استخدام id أو name?الكتاب يجب مراعاة المشكلات التالية عند اتخاذ قرار ما إذا كان استخدام id أو name عن مرساة اسم:

  • السمة id يمكن أن تعمل أكثر من مجرد مرساة اسم (على سبيل المثال ، ورقة نمط محدد ، معالجة معرف ، إلخ.).
  • بعض كبار السن وكلاء المستخدم لا تدعم المراسي التي تم إنشاؤها مع سمة معرف.
  • اسم السمة يسمح ثراء مرساة أسماء (مع الكيانات).

ولدي صفحة على شبكة الإنترنت التي تتكون من عدد من حاويات شعبة مكدسة عموديا، متطابقة في الشكل وتختلف فقط في الرقم التسلسلي. كنت أرغب في إخفاء مرساة اسم في الجزء العلوي من كل شعبة، وبالتالي فإن الحل الأكثر اقتصادا تبين أن بما في ذلك مرساة باعتبارها الهوية داخل فتح شعبة الوسم، أي بمعنى،

<div id="[serial number]" class="topic_wrapper">

مجرد ملاحظة حول العلامات شكل العلامات في الإصدارات السابقة من HTML توفير نقطة مرساة. تتطلب أشكال العلامات في HTML5 باستخدام السمة الهوية، بينما في الغالب ما يعادلها، عنصر لتحديد، ومن المتوقع عادة تقريبا كل منها لاحتواء المحتوى.

وهناك فترة فارغة أو شعبة يمكن أن تستخدم، على سبيل المثال، ولكن هذا يبدو استخدام والروائح المنحطة.

والفكر واحد هو لاستخدام العنصر WBR لهذا الغرض. وWBR لديه نموذج محتوى فارغ وببساطة يعلن أن كسر الخط هو ممكن؛ هذا لا يزال الاستخدام غير المبرر قليلا من علامة العلامات، ولكن أقل بكثير جدا من الانقسامات وثيقة لا مبرر له أو يمتد النص فارغة.

والنموذج الثاني بتعيين معرف فريد لعنصر في السؤال. هذا العنصر يمكن بعد ذلك التلاعب أو الوصول إليها باستخدام DHTML.

وأول واحد، من ناحية أخرى، يضع موقع اسمه في الوثيقة، أقرب إلى إشارة مرجعية. تعلق على "مرساة"، فإنه يجعل الشعور بالكمال.

في HTML 5، والسمة id="" وتعرف على معرف فريد لعنصر، وهو أيضا مرتكزا لارتباط جزء. في معايير أتش تي أم أل السابقة، السمة name="" العنصر <a> تعرف مرتكزا لارتباط جزء. أوصي شيء من هذا القبيل:
<a name="foo" id="foo"></a><h1>Foo Title</h1>
لأن الدعم للسمة id="" هو متقطعا قليلا (على الرغم من أن أحدث الإصدارات من جميع المتصفحات الرئيسية تدعم ذلك، الإصدارات التي لا ليست أكثر من بضع سنوات من العمر [وأنه من الأفضل عدم كسر شيء إذا كان هناك يسن ' ر سببا وجيها ل]). انها متوافقة، وأنه لا أسلوب كل ما هو في العنصر link'd، ليغلق لا يزال خارج عنصر، لكنه ما زال ساري المفعول في جميع المعايير الحالية.

ومما لا شك فيه أن name="" وid="" سمات العنصر <a> هي نفسها.

وماذا عن استخدام السمة اسم المتصفحات القديمة والسمة id لمتصفحات جديدة. وسيتم استخدام كلا الخيارين وسيتم تنفيذ طريقة الإجراء الاحتياطي افتراضيا!

وهذا كله "اسمه مرساة" مفهوم يستخدم سمة اسم، من حيث التعريف. يجب أن العصا فقط لاستخدام الاسم، ولكن السمة ID قد يكون مفيد لبعض الحالات جافا سكريبت.

وكما هو الحال في التعليقات، هل يمكن دائما استخدام كل للتحوط من الرهانات الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top