28. maj 2002 - 08:54Der er
10 kommentarer og 1 løsning
Hvordan oprettes textRange omkring et markeret billede
Jeg sidder og leger med MS' DHTML editor komponent (på en webside).
Hvis vi nu forestiller os at komponenten er navngivet "tbContentElement", så vil følgende kode oprette en TextRange, hvis jeg har markeret noget tekst i editoren.
var idEdit = tbContentElement.DOM; var sText = idEdit.selection.createRange();
alert(sText.htmlText) <-- Printer teksten
Hvis jeg nu istedet har indsat et billede og det er markeret med et klik (så der kommer "håndtag" omkring billedet). Så virker koden ikke som forventet.
Istedet bliver der oprettet en ControlRange collection og jeg kan ikke finde ud af, hvordan jeg laver det om til en TextRange, der kun indeholder billedet.
Det jeg gerne skulle frem til er, at ovenstående alert(sText.htmlText) viser:
<img src="mypicture.gif">
Hvordan gør jeg det? Jeg har prøvet at kalde controlRange's select(), men det hjalp ikke rigtig.
Tja ikke så meget, og dog lidt alligevel vil jeg sige. Jeg ved af egen erfaring med ms edit comp. at når man markerer et pic så kommer der et håndtag, -og en border på.
En ControlRange er en samling af ikke-text objekter, og derfor har den ikke en generel htmlText property. Dog har hvert element i rangen stadig sine outerHTML og innerHTML properties, som du stadig kan få fat i.
Ja den har jeg også selv tænkt. Jeg finder teksten via outerHTML, hvorefter jeg opretter en TextRange ved at søge på teksten. Så har jeg bare problemet, hvis samme billede forefindes i teksten to steder.....
Det skal bruges i sammenhæng med at jeg vil sætte et link omkring. Jeg kan vise eksemplet hvor jeg vil bruge det: ============================================ var idEdit = tbContentElement.DOM;
if (idEdit.selection.type == "Control") { var ctrlrng = idEdit.selection.createTextRange(); // Her skal jeg lave mit "fusk" så jeg får fat i billedet som en TextRange } else { var sText = idEdit.selection.createRange(); }
if (!sText=="") { var url = ""; if (sText.parentElement().tagName == "A") url = sText.parentElement().href;
findText(s); returnerer "false" selvom teksten i str findes. Den er faktisk copy/pastet fra teksten.
Søger jeg på et "almindeligt" ord i teksten, så kan findText() godt finde det. Det virker som om, at findText() ikke er beregnet på at søge efter karakter-sekvenser men mere normal-tekst (prosa mv.)
hmm fandt ellers svaret!!! ...Du kan åbne det ønskede resultat ved at hive outerhtml med over i din modalessdialog... når du så indsætter linket kør du en execCommand('cut'); og efter det indsætter par pastehtml outerhtml + linket omkring... spiller 500!
kan lige sende noget kode hvis du ikke fattede så meget :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.