如果没有显示颜色选择器,我想添加一个jquery颜色选择器后备。例如,chrome显示颜色选择器,但到目前为止,safari只显示一个文本字段。有没有办法(没有用户代理)来检测颜色选择器是否可用?
编辑:Modernizr并不好,因为它只会说safari也支持它。 Safari支持输入类型颜色,因为它不允许在输入框中输入#hex颜色。但是没有颜色选择器。我需要知道是否有颜色选择器。
答案 0 :(得分:5)
你走了。
/**
* Determine if the current browser has support for HTML5 input type of color.
* @author Matthew Toledo
* @return {boolean} True if color input type supported. False if not.
*/
var test = function() {
var colorInput;
// NOTE:
//
// If the browser is capable of displaying a color picker, it will sanitize the color value first. So "!"" becomes #000000;
//
// Taken directly from modernizr:
// @see http://modernizr.com/docs/#features-html5
//
// These types can enable native datepickers, colorpickers, URL validation, and so on.
// If a browser doesn’t support a given type, it will be rendered as a text field. Modernizr
// cannot detect that date inputs create a datepicker, the color input create a colorpicker,
// and so on—it will detect that the input values are sanitized based on the spec. In the
// case of WebKit, we have received confirmation that sanitization will not be added without
// the UI widgets being in place.
colorInput = $('<input type="color" value="!" />')[0];
return colorInput.type === 'color' && colorInput.value !== '!';
};
$(function(){
if (test()) {
$('body').append('<p1>Your browser supports the color input</p>');
} else {
$('body').append('<p>Your browser Doesn\'t Support the color input</p>');
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
答案 1 :(得分:3)
要在任何浏览器上检查HTML3或CSS3的任何功能的支持,您可以使用 modernizr 。
颜色选择器的代码为:
if(!Modernizr.inputtypes.color){
// your fall back goes here
}
对于modernizr,您所要做的就是在网页上添加modernizr的链接。
运行演示,您可以在nettuts上查看:
http://net.tutsplus.com/tutorials/html-css-techniques/how-to-build-cross-browser-html5-forms/
希望这会对你有所帮助。
谢谢, NS
答案 2 :(得分:2)
再次没有jQuery
users-list-page
答案 3 :(得分:1)
您可以使用Modernizr.js检测HMTL5功能并添加回退。
以下是使用Modernizr的简短介绍。
http://html5doctor.com/using-modernizr-to-detect-html5-features-and-provide-fallbacks/
答案 4 :(得分:1)
颜色输入良好的颜色输入无法选择不存在的文本-因此,它们没有selectionStart或selectionEnd属性。
我发现此检查比Modernizr检查更有用,后者仅检查控件是否只能包含十六进制代码。
在Safari 12,Chrome 69,Firefox 62,Internet Explorer 11和Edge 17中进行了测试。
编辑:此方法不会使用Safari 12.1对颜色选择器的支持。任何建议的修复都将受到欢迎。
var supportsColor = true;
try {
var a = document.createElement("input");
a.type = "color";
supportsColor = a.type === "color" && typeof a.selectionStart !== "number";
} catch (e) {
supportsColor = false;
}
document.getElementsByTagName("output")[0].innerText = supportsColor.toString();
Supports color input with color picker: <output></output>
<input type="color"/>