[JS] ContentEditable: PasteHTML op de juiste plek

Pagina: 1
Acties:

  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 24-05 22:18
Ik ben al de hele dag aan het stoeien om onderstaand probleem op te lossen. Ik vermoed dat de oplossing erg simpel is, maar helaas heb ik die (ondanks veel zoeken) niet kunnen vinden. Nadeel is ook dat mijn JS-kennis net iets te beperkt is. Hopelijk kan hier iemand me helpen.

Ik heb de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<html><head>
<script>
function plaatstekst() {
    var selectedText = document.selection.createRange();
        selectedText.pasteHTML ("HALLO")
}
</script></head>
<body bgcolor=#EBEBEB>
<A HREF="javascript:plaatstekst();">Plaats tekst</A><HR>
<div id="edit" contentEditable="true" style="width:400px;height:300px;background-color:white;">&nbsp;<P>Dit gedeelte is te bewerken<P></div>
</body>
</html>


Als ik tekst selecteer in het bewerk-venster, gaat het plaatsen van tekst helemaal goed. Zet ik de cursor echter op een willekeurige plek (zonder een tekstselectie dus), dan verschijnt mijn toegevoegde tekst (d.m.v. PasteHTML) niet in het bewerk-venster, maar daarboven. Iemand een idee wat hier aan te doen is?

Verwijderd

mischien zo: edit.selectedText.pasteHTML ("HALLO")

  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 24-05 22:18
Helaas....Krijg dan de volgende foutmelding:

"edit.selectedText" is leeg of geen object"

Verwijderd

var selectedText = document.getElementById('edit').selection.createRange();

  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 24-05 22:18
Ook hier helaas een foutmelding:

'document.getElementById(...).selection' is leeg of geen object

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Waarschijnlijk zou ik het anders oplossen, maar zo snel kijkend:

Je code werkt wel, maar zet de nieuwe HTML tekst op de positie van je cursor in 't element dat de focus heeft.

code:
1
2
3
document.getElementById('edit').focus();
var selectedText = document.selection.createRange();
selectedText.pasteHTML ("HALLO");


Should do the trick

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 24-05 22:18
Je bent een held! Het werkt!
Thnx!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

SnoW schreef op 21 mei 2004 @ 15:18:
Je bent een held! Het werkt!
Thnx!
Snap je ook waarom het mis gaat?

Dat is natuurlijk de bedoeling van het stukje code wat ik heb gegeven O-)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 24-05 22:18
Ja, ik hem hem door! Je zet eerst de focus op het element (de DIV 'edit' in mijn geval), zodat vervolgens de te plaatsen tekst op de goede plek terechtkomt.

Ooit krijg ik JS nog wel eens echt goed onder de knie.... :)

  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 24-05 22:18
[knip] (sorry)

[ Voor 97% gewijzigd door SnoW op 09-02-2005 12:54 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

SnoW schreef op 21 mei 2004 @ 15:26:
Ja, ik hem hem door! Je zet eerst de focus op het element (de DIV 'edit' in mijn geval), zodat vervolgens de te plaatsen tekst op de goede plek terechtkomt.

Ooit krijg ik JS nog wel eens echt goed onder de knie.... :)
Hmmm... Ik doelde eigenlijk meer op:

Doordat je op die link klikt, gaat de focus naar die link tekst. Vandaar dat Hallo standaard voor je link terecht kwam :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • SnoW
  • Registratie: Februari 2000
  • Laatst online: 24-05 22:18
Ah, dat had ik dus nog niet bedacht.

Bedankt voor de uitleg!!

(en sorry voor die dubbele post hierboven.....ben een beetje overwerkt)

[ Voor 67% gewijzigd door SnoW op 21-05-2004 15:29 ]

Pagina: 1