2016-07-19 11 views
1

Es Chrom erscheinen hat einen Bug mit <input type="color">Inline erstellen Eingabe: Farbe und klicken Sie auf()

Dieser Code funktioniert: (mit einer Datei-Eingabe)

var input = document.createElement('input'); 
    input.type = 'file'; 
    input.click(); 

Aber dieser Code nicht: (mit einer Farbe Eingang)

var input = document.createElement('input'); 
    input.type = 'color'; 
    input.click(); 

Warum? :-(

den Code zu testen, können Sie die Konsole Browser öffnen und fügen Sie den Code. Vielen Dank für Ihre Hilfe.

+0

Sie hier Fehler einfügen können? weil ich Fehler nicht sehe, wenn Versuch mit jsfiddle –

+0

es nicht Fehler in der Tat tut, es gerade keine Reaktion – bArraxas

Antwort

1

Versuchen Sie, diese

var input = document.createElement('input'); 
 
    
 
input.setAttribute("type", "color"); 
 
document.body.appendChild(input); 
 

 
input.addEventListener("click", onColorBoxClick); 
 

 
function onColorBoxClick(){ 
 
console.log('onclick'); 
 
}

+0

wenn Sie 'input.click()' auf dem gleichen Ausschnitt addieren, funktioniert es nicht. Wenn Sie es zu einem späteren Zeitpunkt tun, tut es – eltonkamami

+0

Code aktualisiert, überprüfen Sie jetzt –

+0

OP ist Colorpicker erwarten, wenn Element erstellt wird ... – Rayon

1

einfach erstelle es in einer Variablen und muss es an den Körper anhängen so am Ende muss dies schreiben:

document.body.appendChild(input); 
1

auf neuestes Chrom Getestet ein firefox Rand

Nur ist firefox Lage, die modal zu öffnen von der Konsole Chrome und Edge-nichts tun

Das ist also eine Art Bug/Feature

+0

Ich hatte die gleiche Schlussfolgerung :-) – bArraxas

0

Gelöst!

Für Farbeingabe muss die Eingabe in die Dom hinzugefügt werden. In meinem Kontext (Winkel-) hatte ich brauche eine zweite Codezeile hinzuzufügen, für den Einsatz in dom Verzögerung wie dieses Problem zu beheben:

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

document.body.appendChild(input); 

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