JavaScript execCommand('copy') funktioniert nicht
Ich bin nicht in der Lage zu verwenden, die execCommand('copy'), versucht zu kopieren-Wert, der ausgewählt ist, im multi-select-option. iam erste Wert in "temp" - aber der Wert ist immer in temp kopieren oder sich in die Zwischenablage kopieren.
{
$propArr=array_unique($properties);
echo "<div class='table-responsive'>";
echo "<table class='bordered'>";
foreach($propArr as $keyProp =>$val){
echo "<tr>";
echo "<td>$val</td><td>";
echo "<select name='propval' id='propval' onclick='showpropval(this.value);' class='form-control' multiple>";
foreach($values as $k => $v){
if($val==$k){
foreach($v as $kv =>$fval){
echo "<option value='$fval'>$fval</option>";
}
}
}
echo "</select>";
echo"</td>";
echo "</tr>";
}
echo "</table>";
echo "</div>";
}
<script>
function showpropval(val)
{
var temp = val;
temp.execCommand("copy");
}
</script>
InformationsquelleAutor Rajesh k | 2017-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verstehe ich, dass Ihre Absicht ist folgende: Sie wollen, kopieren Sie die Werte der ausgewählten Optionen in die Zwischenablage, sobald Sie es auswählen.
Wenn Sie
document.execCommand('copy')
Sie kopieren, was auf der Seite ausgewählt (zum Beispiel Inhalt, der in einem Absatz oder in einem input-Feld selbst).Der Haken ist jedoch, dass die Auswahl von Optionen in
<select>
ist nicht als ausgewählten text. Schlimmer noch, wenn Sie möchten, um die trigger-Auswahl von text via javascript gibt es einige Einschränkungen: Sie können nur aufrufen, .wählen Sie() auf eine<input>
oder eine<textarea>
element.Hier ist, was ich tun würde: kopieren Sie die ausgewählten Optionen in eine separate (nicht sichtbar) input-Feld, wählen Sie es und kopieren Sie den Inhalt aus.
Hier ist ein Turnschuh, die dienen kann, als eine demo: https://jsfiddle.net/Zomry/metcfvcq/13/
Ich wil Sie brechen hier:
Ersten, fügen Sie dieses element auf der Seite. Dies ist das Eingabe-Feld kopieren wir den Inhalt aus der Zwischenablage. Beachten Sie, dass ich habe tabindex -1, damit die Sie nicht erreichen es über die tab-Taste. Ich habe auch enthalten aria-hidden, so dass Screenreader wissen, sollte es einfach ignorieren.
Dann machen Sie die Eingabe-Feld unsichtbar, indem Sie es vom Bildschirm (hat nicht funktioniert, wenn ich versucht display: none; oder andere tricks)
Dann kopieren Sie den Wert in das Eingabefeld, markieren Sie es und kopieren Sie es.
Dokument.execCommand("copy") gibt "falsch" für mich.
Vielleicht, hängt von der browser. Getestet habe ich in der neuesten version von Chrome damals. Welchen browser wollen Sie?
InformationsquelleAutor Zomry
Hatte ich den anderen Fall von "copy" - Befehl nicht funktioniert. ExecCommand true zurück, aber der Wert wurde nicht kopiert. In meinem Fall war das problem die Funktion, die ausgeführt wird der Befehl (ein Versprechen, um genau zu sein). Vielleicht ein kleines Beispiel (mit der Funktion von Zomry Antwort):
Wenn ich das richtig deute, Befehl muss aufgerufen werden, die in der gleichen Skript-Ausführung iteration, die aufgerufen wurde, von einem Menschen. Da Versprechen-Rückruf in andere iteration, browser verweigert (obwohl es sagt, dass es nicht). Ich weiß nicht, ob dies wahr ist, aber der code funktioniert für mich, und das ist gut 😉
InformationsquelleAutor Sielu
ok, mein Ansatz ist ein wenig einfacher:
zusätzliches Feld
dom-aber nicht im sichtbaren viewport!
hier ein Beispiel:
InformationsquelleAutor Alireza Noori
Versuchen Sie dies:
InformationsquelleAutor ledaivuong