2009-02-15 41 views
9

Tôi đang làm việc trên một số JavaScript yêu cầu thẻ có thể lấy tiêu điểm. Tôi muốn có thể sử dụng thẻ <div />, tuy nhiên, <div /> thẻ không thể lấy tiêu điểm.Tập trung vào yếu tố không đầu vào/neo?

Dường như các yếu tố duy nhất có thể lấy tiêu điểm là <input /> thẻ và <a /> thẻ. Có cách nào khác để cho phép yếu tố lấy tiêu điểm không phải là thẻ <input /> hoặc <a /> không?

tôi không thể sử dụng <a /> hay <input /> thẻ bởi vì tôi cần để có thể đặt nội dung bên trong thẻ nên không ai trong số những thẻ sẽ làm việc, trừ khi có một cách để cho phép lồng nhau <a /> thẻ, mặc dù tôi nghi ngờ nó vì đó goes against the standard. Tôi đang cố gắng tìm ra cách để cho phép một thẻ <div /> (hoặc bất kỳ phần tử vùng chứa nào khác) để lấy tiêu điểm.

Trả lời

9

Bạn có ý nghĩa gì bởi "có thể tập trung"? Bất kỳ phần tử DOM nào cũng có thể được thiết lập để nhận được vô số các sự kiện javascript bao gồm các sự kiện click.

Hay bạn có nghĩa là "có thể được gắn thẻ với bàn phím"? Nếu có, và nếu bạn không thể sử dụng thẻ a làm vùng chứa của mình, hãy thử tabindex property trên các yếu tố của bạn. Tôi không chắc chắn làm thế nào qua trình duyệt nó được, nhưng ít nhất hãy thử nó trước khi viết một ui tab trong javascript mình.

+0

Bất kỳ phần tử DOM nào cũng có thể nhận được hầu hết các sự kiện, chứ không phải sự kiện "tập trung", dường như được dành riêng cho các yếu tố cụ thể có thể khác nhau tùy thuộc vào trình duyệt. Các "tabindex" tài sản có vẻ như làm các trick trong trường hợp của tôi mặc dù. –

+0

@DanHerbert - tò mò: trình duyệt nào hoạt động? –

+0

Tôi biết nó không phải là một giá trị tiêu chuẩn, nhưng hiện nay công việc xung quanh cho công nghệ hỗ trợ để đạt được tập trung vào thẻ neo là để cung cấp cho nó một tabIndex của -1. – clamchoda

0

Dấu trang là cách để thực hiện.

Bắt đầu nội dung của bạn với

<a href="#anchor"> 
0

Hơi của một workaround và không ngữ nghĩa chính xác, nhưng ...

a#foo { display: block; } 
a#foo:hover { cursor: default; } 

Sau đó, sử dụng JavaScript để đánh chặn các sự kiện onClick vào a#foo và trả về false.

Các vấn đề liên quan