我在需要在多个浏览器中工作的 HTML 5 页面上有一个搜索输入:
<input type="search" placeholder="type here..." />
我通过查看浏览器是否将其呈现为search
输入或常规来检测浏览器是否支持搜索text
:
var supportsHtml5Search = !!(inputDomElement.type !== 'text');
if (supportsHtml5Search) {
inputDomElement.addEventListener('search', searchFunction);
}
else {
// This browser doesn't support onsearch event, so handle keyup instead
inputDomElement.addEventListener('keyup', searchFunction);
}
这很好用——Chrome 和 Safari 使用了该onsearch
事件(当它们点击清除X
图标时也会触发),而 IE 使用了该keyup
事件(此处未显示一些额外的检查)。
然而,这似乎在 IE10 中被破坏了,它显示 asearch
与 an 完全相同<input type="text" />
(如 IE9 及更低版本)并search
作为类型返回(如 Chrome/Webkit),但不会触发onsearch
事件。
有没有更好的方法来检测搜索输入支持?
嗅探此功能支持的最佳方法是什么?