我试图通过点击它突出显示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();
}
但似乎依赖于捕获声明的反模式。有更好的方法吗?