Javascript 内联创建输入:颜色并单击()

Javascript 内联创建输入:颜色并单击(),javascript,color-picker,Javascript,Color Picker,chrome似乎有一个 此代码工作:(使用文件输入) 但此代码不是:(带有颜色输入) 为什么-( 要测试代码,可以打开console浏览器并粘贴代码。 谢谢你的帮助。试试这个 var input=document.createElement('input'); 输入.setAttribute(“类型”、“颜色”); document.body.appendChild(输入); input.addEventListener(“单击”,onColorBoxClick); 函数onColorBoxC

chrome似乎有一个

此代码工作:(使用文件输入)

但此代码不是:(带有颜色输入)

为什么-(

要测试代码,可以打开console浏览器并粘贴代码。 谢谢你的帮助。

试试这个

var input=document.createElement('input');
输入.setAttribute(“类型”、“颜色”);
document.body.appendChild(输入);
input.addEventListener(“单击”,onColorBoxClick);
函数onColorBoxClick(){
log('onclick');

}
您只需在变量中创建它,并且必须将其附加到正文中。 所以在结尾必须写下:

document.body.appendChild(input);

在firefox的最新chrome edge上测试

只有firefox能够从控制台打开模式 铬和边什么都不做

因此,这是一种错误/功能

解决方案

对于颜色输入,需要将输入添加到dom中。 在我的上下文(angular)中,我需要添加第二行代码来修复插入dom延迟,如下所示:

var input = document.createElement('input');
    input.type = 'color';
    input.style.opacity = 0;

document.body.appendChild(input);

$timeout(function() {
    input.click();
}, 100);

这样做有安全风险,所以我认为它不会在所有浏览器中都可用,据说IE允许,但Mozilla和Opera不允许

检查以下答案:


您可以在此处粘贴错误?因为我在尝试使用JSFIDDLE时没有看到错误。事实上,如果您添加
input,则不会有任何反应。在同一个代码段上单击()
,则不起作用。如果您稍后再执行,则不会有相同的结论:-)
document.body.appendChild(input);
var input = document.createElement('input');
    input.type = 'color';
    input.style.opacity = 0;

document.body.appendChild(input);

$timeout(function() {
    input.click();
}, 100);