ป้องกัน tabstop กับองค์ประกอบ (ลิงค์ยึด) ใน HTML


152

เป็นไปได้หรือไม่ที่จะยกเลิก<a href="...">แท็บที่ถูกแท็บในเบราว์เซอร์ ฉันต้องการทำสิ่งนี้โดยไม่ใช้ Javascript

คำตอบ:


265

เบราว์เซอร์บางตัวสนับสนุนtabindex="-1"คุณสมบัติ แต่ไม่ใช่ทั้งหมดเนื่องจากนี่ไม่ใช่พฤติกรรมมาตรฐาน


22
โอ้เยี่ยมมาก! ขอบคุณ! ฉันได้ตรวจสอบกับ FF3.5, IE8 และ CH3 และมันทำงานได้ทั้งสามอย่าง ขอบคุณหนึ่งล้าน!
Robert Koritnik

1
ไม่ต้องกังวลเกี่ยวกับสิ่งนี้: เช่นเดียวกับ zzzzBov ที่นี่ HTML5 มาถึงการช่วยเหลือและสร้างมาตรฐานการทำงานนี้ ดังนั้นตอนนี้เบราว์เซอร์ที่มีความผิดคือผู้ที่พลาดสิ่งนี้
TechNyquist

1
โปรดทราบว่าการปิดใช้งาน tabstop บนไฮเปอร์ลิงก์นั้นขัดกับกฎการเข้าถึง (เช่นผู้ที่ใช้โปรแกรมอ่านหน้าจอเป็นต้น) หากคุณรู้ว่านี่ไม่ใช่ปัญหาสำหรับฐานผู้ใช้ของคุณก็ควรจะดี
Ricardo Sanchez

73

เบราว์เซอร์รุ่นใหม่ที่สอดคล้องกับ HTML5 รองรับ[tabindex]แอตทริบิวต์ซึ่งค่า-1จะป้องกันองค์ประกอบจากการแท็บเป็น

หากค่าเป็นจำนวนเต็มลบ
เอเจนต์ผู้ใช้ต้องอนุญาตให้องค์ประกอบโฟกัส แต่ไม่ควรอนุญาตให้เข้าถึงองค์ประกอบได้โดยใช้การนำทางโฟกัสแบบต่อเนื่อง


1
ข้อความที่ตัดตอนมาเอกสารช่วยเสมอ ;-) สิ่งนี้บอกเราว่าคนที่ไม่สนับสนุนสิ่งนี้เป็นหนึ่งในไม่กี่คนและพวกเขาจะสนับสนุนมันไม่ช้าก็เร็ว
Robert Koritnik

15

คุณสามารถใช้ตัวจัดการ JQuery กับองค์ประกอบที่คุณต้องการกำหนดเป้าหมายหลายองค์ประกอบโดยไม่มีการหยุดแท็บ

$(document).ready(function () {
    $('.class').attr('tabindex', '-1');
});

จะเป็นวิธีหนึ่งที่จะทำ ....


6

ฉันคิดว่าคุณสามารถทำได้โดยใช้จาวาสคริปต์แทนคุณwindow.onkeypressหรือonkeydownดักจับปุ่มแท็บและตั้งโฟกัสตามลำดับที่ต้องการ


2
ฉันไม่ทราบว่าคุณได้ตรวจสอบคำตอบอื่น ๆ ที่เป็นที่ยอมรับโดยเฉพาะซึ่งได้รับคำตอบเมื่อประมาณหนึ่งปีที่แล้วและแก้ปัญหานี้โดยไม่ใช้ Javascript
Robert Koritnik

2
ฉันขอขอบคุณโซลูชันทางเลือกแม้ว่าจะไม่ได้ใช้ OP รวมถึงคำตอบที่ได้รับการยอมรับก็ตาม ไม่จำเป็นต้องดูถูก
Anthony DiSanti

@Anthony DiSanti: นั่นเป็นความจริง แต่ในกรณีนี้ฉันยังไม่เห็นว่าทำไมคนเราถึงหันไปใช้จาวาสคริปต์หากมีสิ่งอื่นที่ดีกว่า ดังนั้นถ้ามันไม่ได้คำตอบสำหรับคำถามนี้ทำไมมันอยู่ที่นี่แล้ว? ไม่เป็นไร. โดยปกติแล้ว Javascript จะเป็นขั้นตอนสุดท้ายที่จะดำเนินการหากไม่สามารถดำเนินการบางอย่างได้ และฉันขอโทษ @Ammosi ถ้าฉันดูถูกคุณ ฉันไม่ได้ตั้งใจจะหยาบคาย ขอบคุณสำหรับคำตอบที่ล่าช้า
Robert Koritnik

7
ฉันเห็นด้วยกับการหลีกเลี่ยงจาวาสคริปต์หากมีวิธีการแก้ปัญหา HTML หรือ CSS ตามมาตรฐาน อย่างไรก็ตามในกรณีนี้ไม่มี โปสเตอร์ต้นฉบับไม่จำเป็นต้องสนับสนุนเบราว์เซอร์ก่อน IE8 และ FF3.5 แต่สำหรับงานของฉันฉันต้องสนับสนุนกลับไปที่ IE6 โซลูชัน tabindex จึงไม่สามารถใช้ได้ ไม่ควรให้การแก้ปัญหาการทำงานเฉพาะในเบราว์เซอร์ที่มีส่วนแบ่งตลาดมากที่สุด
Anthony DiSanti

4

ลบhrefแอตทริบิวต์ออกจากแท็กจุดยึดของคุณ


ถ้าฉันทำไม่ได้
Hakan Fıstık

หากเต็มใจที่จะใช้จาวาสคริปต์แม้จะมีคำถามเพื่อหลีกเลี่ยงการแก้ปัญหาแบบนั้นในการลบแอตทริบิวต์ href ให้ใช้ jquery document onload กับสิ่งที่ต้องการ$('[href="whatever-the-url-is"]').removeAttr('href');
Jonas Lundman

6
LOL ลบ href
quemeful
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.