Rolf B: in Textarea strings sammeln, dannach in die Zwischenablage kopieren

Beitrag lesen

Hallo Gunnar,

unterm Strich: Ja, Clipboard API ist besser. Ich war gestern abend nur zu doof dafür.

Ansonsten: Du ärgerst mich.

Nei-en! Verstecken, ja, aber doch nicht so! Aus Gründen.

Probierst Du den Mist, den Du da vorschlägst, eigentlich selber aus? Oder geht's Dir nur darum, mir aus Prinzip erstmal zu widersprechen? In letzter Zeit habe ich diesen Eindruck. Der Vorschlag mag für ein <p> sinnvoll sein, aber nicht für eine Textarea.

  • die Textarea belegt nach wie vor Platz
  • man sieht den Rand der Textarea
  • man sieht das resize-Handle
  • man kann in die textarea hineintabben, und dann wird ihr Textinhalt sichtbar.
  • ist die Textarea nicht off-screen positioniert, kann man hineinklicken
  • ein Screenreader bietet Dir die Textarea vermutlich immer noch an.

Das ist also eine für diesen Zweck sehr unpassende Idee, und entscheidende Fehler bleiben. Genau die, gegen die Du immer antrittst: Accessibility und Tastaturbedienung.

Man kann die genannten Probleme allesamt mit HTML-Attributen oder CSS-Eigenschaften lösen, aber eins bleibt: um nicht hineinklicken zu können, muss die textarea off-screen platziert werden, oder hinter ein anderes Element, und damit ist das ganze visuelle Gedönsrath egal.

Ich würde daher diese Methode vertreten: tabindex="-1", aria-hidden="true" und per CSS noch width:1px; left:-10px; position:absolute. Damit sollte das Hauptargument deiner verlinkten Seite beseitigt sein: Performance (die sich nur auf lahmarschigen Geräten bei Animationen zeigen dürfte).

(Edit: -1px in 1px geändert)

Man kopiert den generierten String direkt in die Zwischenablage

Ja, das ist natürlich besser, und das hatte ich auch ausprobiert. Mit Chrome. Und da funktionierte es nicht:

pen.js:21 Async: Could not copy to clipboard: DOMException: The Clipboard API has been blocked because of a Feature Policy applied to the current document. See https://goo.gl/EuHzyv for more details.

Das passiert in jsFiddle und Codepen gleichermaßen. Firefox kennt diese Feature Policy (noch) nicht, darum hast Du das nicht bemerkt, würde ich annehmen.

Das war gestern abend; da war ich wohl zu verschnarcht, einfach mal eine lokale HTML Seite daraus zu machen statt es in einem Fiddle zu probieren. Ohne iframe geht es auch in Chrome - offenbar ist das clipboard-write Feature auf einer ungeframten Seite per Default eingeschaltet (ich hab mal probehalber einen Feature Policy Header gesetzt, und konnte es damit verhindern)

Deshalb bin ich gestern erstmal bei der textarea geblieben (und kein output, weil es die select/setSelectedRange Methoden nur in Eingabeelementen gibt).

Rolf

--
sumpsi - posui - obstruxi