【发布时间】:2013-02-14 19:36:55
【问题描述】:
我在需要在多个浏览器中工作的 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 中被破坏了,它显示 search 与 <input type="text" /> 完全相同(如 IE9 及更低版本)并返回 search 作为类型(如 Chrome/Webkit),但没有t 触发 onsearch 事件。
有没有更好的方法来检测搜索输入支持?
了解此功能支持的最佳方式是什么?
【问题讨论】:
-
@raina77ow 我会调查的,干杯。
-
@raina77 好用!我把它改成了
var supportsHtml5Search = !!('onsearch' in inputDomElement);,在IE10中返回false,在Webkit中返回true。我还有一些测试要做,但把它放在一个答案中,我会接受它:-) -
好的,完成了(还添加了一些研究)。仍然想知道为什么在这里需要
!!-in不总是返回boolean? -
@raina77ow 我没有,代码库有很多布尔值,所以到处都是
!!:-S
标签: html cross-browser internet-explorer-10 html-input browser-feature-detection