iOS和Android [type = number] setSelectionRange与select

时间:2018-02-12 13:03:02

标签: javascript input selection

我试图通过点击它突出显示input[type=number]的文字。我最初尝试select()适用于Chrome(Android),但它不适用于Safari(iOS)。

所以我找到了一段代码,建议我尝试setSelectionRange(0, nativeEl.value.length);

这适用于iOS!但是,对于Chrome,它崩溃了:

Uncaught DOMException: Failed to execute 'setSelectionRange' on 'HTMLInputElement': The input element's type ('number') does not support selection.

因此,一种方法适用于一个平台,而不适用于另一个平台,反之亦然。

我的问题是,在没有浏览器嗅探的情况下,确定最佳平台差异的最佳方法是什么? setSelectionRange的Chrome和Safari实例上都存在input。因此,检查该属性是多余的。

到目前为止,我提出的最佳代码如下:

let nativeEl: HTMLInputElement = this.el.nativeElement.querySelector('input');

if (nativeEl) {
  if (nativeEl.setSelectionRange) {
    // select the text from start to end
    try {
      nativeEl.setSelectionRange(0, nativeEl.value.length);
    } catch (e) {
      nativeEl.select();
    }
  }

  nativeEl.select();
}

但似乎依赖于捕获声明的反模式。有更好的方法吗?

0 个答案:

没有答案