Make an HTML element non-focusable

前端 未结 8 2311
误落风尘
误落风尘 2020-12-02 16:40

Is it possible to make an HTML element non-focusable?

I understand that a list of elements that can receive focus can be defined and that a user can

相关标签:
8条回答
  • 2020-12-02 16:51

    I used focusable="false", because tabindex="-1" was not working in IE.

    0 讨论(0)
  • 2020-12-02 17:00

    To completely prevent focus, not just when using the tab button, set disabled as an attribute in your HTML element.

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    
    <input class="form-control" type="text"> Click this, you can see it's focusable.
    
    <input class="form-control" type="text" readonly>  Click this, you can see it's focusable.
    
    <input class="form-control" type="text" readonly tabindex="-1">  Click this, you can see it's focusable. Not tab'able.
    
    <input class="form-control" type="text" disabled>  Click this, you can see it's <strong>not</strong> focusable.

    0 讨论(0)
  • 2020-12-02 17:02

    I was just reading YouTube source code, I see focusable="false"

    <svg xmlns="https://www.w3.org/2000/svg" focusable="false" aria-label="" fill="#4285F4" viewBox="0 0 24 24" height="24" width="24" style="margin-left: 4px; margin-top: 4px;"><path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"></path></svg>

    Is that a more correct answer?

    0 讨论(0)
  • 2020-12-02 17:04

    In order to make an prevent an element from taking focus ("non-focusable"), you need to use Javascript to watch for the focus and prevent the default interaction.

    In order to prevent an element from being tabbed to, use tabindex=-1 attribute.

    Adding tabindex=-1 will make any element focusable, even div elements. This means when a user clicks on it, it would likely get a focus outline, depending on the browser..

    You would ideally, want this:

    function preventFocus(event) {
      event.preventDefault();
      if (event.relatedTarget) {
        // Revert focus back to previous blurring element
        event.relatedTarget.focus();
      } else {
        // No previous focus target, blur instead
        event.currentTarget.blur();
      }
    }
    
    /* ... */
    
    element.setAttribute('tabindex', '-1');
    element.addEventListener('focus', preventFocus);
    
    0 讨论(0)
  • 2020-12-02 17:06

    TabIndex is what your looking for: http://www.w3schools.com/jsref/prop_html_tabindex.asp.

    When you set a tabIndex value to -1 you will skip it when tabbing through your form.

    0 讨论(0)
  • 2020-12-02 17:12
    <a href="http://foo.bar" tabindex="-1">unfocusable</a>
    

    A negative value means that the element should be focusable, but should not be reachable via sequential keyboard navigation.

    See also: developer.mozilla.org

    0 讨论(0)
提交回复
热议问题