Rolf B: Doppelclick soll den gewünschten Text auswählen

Beitrag lesen

Hallo Andy,

im Chrome wird immer das Leerzeichen dahinter mitgenommen. Scheint ein wichtiges "Feature" zu sein.

Dein Code ist allerdings sehr umständlich und vor allem erkenne ich nicht, weshalb er das tun sollte, was Du behauptest. Du ersetzt Leerstellen durch &#32; und Zeilenumbrüche durch <br>. Dann ersetzt Du die Zeilenumbrüche nochmal, nur jetzt mit einer Regex-Variablen statt einem Regex-Literal. ENTFERNT wird eine Leerstelle oder ein Zeilenumbruch dadurch nicht.

Den hier verstehe ich überhaupt nicht mehr:

$(Leiste.innerHTML = txt).ready()

Diese Zeile tut mehrere Dinge:

  • sie weist txt an Leiste.innerHTML zu
  • sie übergibt den zugewiesenen Text an jQuery (wenn denn $ bei Dir jQuery ist). Dieser Text ist aber der Wert des Daten-Attributs vom Element, das Du per Link ansprichst (vermutlich also die erwähnten Logindaten - also weder ein Selektor, noch HTML, noch eine Callback-Funktion. Im Ergebnis dürfte ein leeres wrapped set entstehen (oder vielleicht ein merkwürdiges HTML Fragment).
  • auf diesem unklaren Rückgabewert rufst Du dann die ready-Funktion von jQuery auf - die aber überhaupt nichts mit dem wrapped set macht, sondern einen Callback aufruft, sobald das DOM fertig geladen ist. Diesen Callback übergibst Du aber nicht einmal, insofern passiert da überhaupt nichts - bzw. du rufst die Funktion prinzipiell falsch auf und hast Glück, dass jQuery das schweigend ignoriert statt eine Exception zu werfen.

Eigentlich brauchst Du in dieser Zeile nur die Zuweisung, der Rest dient bestenfalls nur zur Verwirrung der Russen.

Leiste.innerHTML = txt;

Wenn Du Leerzeichen ENTFERNEN willst, schlage ich Dir die trim() Methode vor, die von Strings mitgebracht wird und von den Browsern hinreichend unterstützt wird. Damit wird es ein Einzeiler, wenn Du Dich auf die Existenz des Elementes mit id='Daten' und des Daten-Attributs auf dem Link-Element verlässt. Eigentlich müsste man das testen.

top.document.getElementById("Daten").innerHtml = Link.getAttribute("Daten").trim();
var elDaten = top.document.getElementById("Daten"),
    attrDaten = Link.getAttribute("Daten");
if (elDaten !== null && attrDaten !== null) {
   elDaten.innerHtml = attrDaten.trim();
}

Statt var kannst Du auch let verwenden, wenn Du hinreichend neues JavaScript voraussetzen kannst.

Rolf

--
sumpsi - posui - clusi