频谱颜色选择器在 Internet Explorer 中不起作用
Posted
技术标签:
【中文标题】频谱颜色选择器在 Internet Explorer 中不起作用【英文标题】:Spectrum Color-Picker not working in Internet Explorer 【发布时间】:2015-07-28 07:47:39 【问题描述】:我在我正在处理的一个 javascript 项目中使用光谱颜色选择器。 https://bgrins.github.io/spectrum/ 它在 FireFox 中运行良好,但在 Internet Explorer 中却不行。花哨的颜色选择器弹出窗口退化为一个简单的文本输入字段。以下是创建输入字段的代码部分:
function updateTables()
$("#tableTwo tbody").empty();
for (var i = 0; i < polygons.length; i++)
//var pColor = new RGBColor();
var pColor = rgbaToHex(polygons[i].color);
$("#tableTwo tbody").append('\n<tr '
+ (selectedPoly == i ? 'style="color:white;background-color:red"' : '')
+ '><td><input onchange="changeGeometryName(' + i + ')"'
+ (selectedPoly != i ? 'onfocus="polySelectedFromTable(' + i + ')"' : '') + 'type="text" size="11" '
+ 'id="polygonName' + i + 'Input" value="' + polygons[i].name + '" /></td>' + "<td><input type='color'"
+ ' onchange="setColor(' + i + ')" id="color' + i + '" value="' + pColor + '"/></td>' + "</tr>");
然后我的 html 文件中有这两行:
<script src='spectrum.js'></script>
<link rel='stylesheet' href='spectrum.css' />
文档说如果 javascript 不工作,输入将降级为文本输入,但我知道这不是问题,因为项目的其余部分工作正常。非常感谢任何帮助!
【问题讨论】:
【参考方案1】:你好!
首先,频谱文档对此有点困惑,所以我花了一段时间才找到,但是一旦找到答案,答案实际上真的非常愚蠢:
你没有使用频谱。
所以,首先,文档说:
如果你只想为原生颜色输入提供一个 polyfill,最简单的方法是创建一个颜色类型的输入。一旦用户的浏览器支持原生颜色控件,它将选择使用其原生控件。 Spectrum Docs
所以,这就是我们试图做的事情,却没有意识到我们并没有真正使用频谱。相反,我们使用的是 IE 不支持的 HTML 5 颜色输入类型规范(参见 color input type support)
所以,要启用频谱,我们实际上需要调用频谱库,然后它才能工作:
$('#color' + id).spectrum( color: pColor(, other-parameters-here));
【讨论】:
以上是关于频谱颜色选择器在 Internet Explorer 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 高级选择器在 Internet Explorer 8 中失败
:visible 选择器在 Internet Explorer 中不起作用