我编写了一个插件,它模仿 Chrome 搜索输入字段的行为。(有一个 X,它清除输入)。
但是,Chrome 和 IE10 本身就支持这种行为,所以我不想在这些浏览器中应用插件。
我找到了 IE10 的方法。将样式元素注入 DOM,隐藏伪元素“::-ms-clear”(即 IE 插入文本输入的 x),然后检查某个输入中的伪元素是否具有“显示:无”。
Chrome 还添加了一个伪元素:“-webkit-search-cancel-button”,我也可以使用 CSS 隐藏它,但是我无法确定它是否隐藏,使用getComputedStyle,因为 Chrome 总是返回输入本身的结果,而不是伪元素。提前致谢 :)
(function () {
function hasNativeClearButton(input) {
var inputCopy = input.cloneNode(),
head = document.getElementsByTagName('head')[0],
style = document.createElement('style'),
css = '.cc-clearinput-already-supported-test { position: absolute;display: block; } .cc-clearinput-already-supported-test::-ms-clear { display: none; } .cc-clearinput-already-supported-test::clear { display: none; } .cc-clearinput-already-supported-test::-webkit-search-cancel-button { display: none; }';
style.textContent = css;
head.insertBefore(style, null);
inputCopy.className = 'cc-clearinput-already-supported-test';
inputCopy.value = 'aValue';
document.body.insertBefore(inputCopy, null);
alert(window.getComputedStyle(inputCopy, '::-ms-clear').display);
alert(window.getComputedStyle(inputCopy, '::-webkit-search-cancel-button').display);
head.removeChild(style);
document.body.removeChild(inputCopy);
}
var daInput = document.createElement('input');
daInput.type = 'search';
hasNativeClearButton(daInput);
})()