Avatar billede roadrunr Nybegynder
21. august 2000 - 23:41 Der er 18 kommentarer og
1 løsning

DHTML Editor Component (i gang med...)

Jeg har været det meste af \"microsoft.com\" i gennem for at lære om \"DHTML Editor Component\" og komme i gang med at bruge den. Men jeg synes informationer er alt for mange og svære at forstå.

Derfor søger jeg hjælp til at komme i gang. Jeg skulle gerne bruge lidt hjælp til hvordan man:

- definere sit redigeringsfelt(iframe, object?) hvilke ting man skal gøre for at man kan skive i feltet.

- eksempler på hvordan man bruger CommandExec/QueryStatus-commandoer m.m.

- Evt en idé til hvordan man henter og gemmer i en database.

jeg er ikke særlig interesseret i at folk indsætter links til ms.com, men i stedet at de poster lidt kode, eller evt. et link til en slags toturial på nettet.

På forhånd tak.

Avatar billede jumper Nybegynder
22. august 2000 - 03:59 #2
Alt hvad du har brug for er

document.designMode
execCommand() (på enten document eller en textRange)
og textRanges.

Sålænge du skal bruge dette i browseren og ikke i et selvstændigt program, behøves du aldrig at kalde ActiveX komponenten direkte.

Kort fortalt:

Du har en IFRAME på din side, hvor du sætter document.designMode til \"on\". Nu kan brugeren bruge piletasterne, og de andre gængse redigeringsmuligheder, indeni dokumentet i denne IFRAME. Når brugeren så trykker på din Bold knap, er koden såmænd meget simpel:

var range = IFRAME.document.selection.createRange()
range.execCommand(\"Bold\")

Ovenstående forudsætter selvf. at brugeren har valgt noget i siden, hvilket der også skal tjekkes for.

WebFx og SiteExperts har nogle udmærkede sider der hurtigt demonstrerer grundprincipperne (Fed, Kursiv, Understreget, Skriftstørrelse, osv...)

Når du har fået lavet en grundmodel, og evt. vil lægge mere funktionalitet i, kan du bare vende tilbage hertil.

/Thor
Avatar billede roadrunr Nybegynder
22. august 2000 - 08:51 #3
jumper: Tak for introduktionen. Jeg har selv været lidt på de 2 andre sidder du nævner(sammen med \"erikjacobsen\"). Og det har også virket fint. Men når jeg f.eks. vil tilføje funktioner som \"punkttegn\" m.m. så kan jeg ikke rigtig finde ud af hvilke commands jeg skal bruge.
Inde på microsoft.com har de tilsyneladende en anden metode til at manipulere teksten, hvor de bruger noget ala.

retVal = object. QueryStatus( DECMD_BOLD ) ???
object. ExecCommand DECMD_BOLD ????

hvor man har et javascript, som indeholder nogle værdier svarende til \"CMDID\'et\"
Kan man ikke bruge deres metode? Fordi inde på deres side, har de en lang liste over alle de funtioner/commandoer man kan kalde, hvilke jeg ikke har fundet tilsvarende andre steder.
Avatar billede jumper Nybegynder
22. august 2000 - 08:57 #4
object er din textrange og DECMD_BOLD er blot en streng, der højst sandsynligt indeholder \"Bold\" ;)

De relevante sider på MSDN er

http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/execcommand.asp

og en (delvis) liste over funktioner

http://msdn.microsoft.com/workshop/author/dhtml/reference/commandids.asp

\"punkttegn\" ?

/Thor
Avatar billede roadrunr Nybegynder
22. august 2000 - 09:07 #5
ja dem har jeg siddet og kigget på i timevis, men jeg kan ikke finde ud af at bruge den rigtig(tilsyneladende).

punkttegn!

- Punkt1
- Punkt2
- Punkt3

hvor man kan få dem med \"dots\" og \"numbers\"

? DECMD_BOLD indeholder en værdi som \"1\" eller \"234\" (altså et tal)
Avatar billede jumper Nybegynder
22. august 2000 - 09:14 #6
ahh punkttegn, execCommand(\"InsertOrderedList\") eller execCommand(\"InsertUnorderedList\"). Kig på listen over funktioner *s*

Hvad angår tal i DECMD_BOLD er det ikke så mærkeligt, en CMDID kan være både en streng og et tal.

/Thor
Avatar billede roadrunr Nybegynder
22. august 2000 - 09:18 #7
Poster lige lidt kode: Kan du venligst fortælle mig hvorfor det ikke virker?
------------------------
<html>
<head>
    <title>Untitled</title>
    <script language=\"JavaScript\" src=\"dhtmled.js\"></script>
    <script>
       
    function CMD_BOLD_onclick() {
        var range = myEditor.document.selection.createRange()
        range.ExecCommand(DECMD_BOLD)
    }
   
   
    </script>
</head>

<body>


<input type=\"button\" value=\"B\" onClick=\"CMD_BOLD_onclick();\">

<iframe width=\"400\" height=\"300\" id=\"myEditor\"></iframe>

<script>
    myEditor.document.designMode = \"on\";
</script>

</body>
</html>
----------------------------------
i den linkede javascriptfil ligger alle cmdid\'s.
Avatar billede jumper Nybegynder
22. august 2000 - 09:22 #8
range.ExecCommand skal være range.execCommand (lille e).

Hvis der stadig er fejl må du give et link til dhtmled.js, jeg aner jo ikke hvad der er i den *S*

/Thor
Avatar billede roadrunr Nybegynder
22. august 2000 - 09:30 #9
Avatar billede jumper Nybegynder
22. august 2000 - 09:42 #10
dhtmled.js og de standard variabler der er i den er jo beregnet til brug med DHTML Editing Component når du indlæser den som en ActiveX komponent.

Hvis du erstatter

range.ExecCommand(DECMD_BOLD)

med

range.ExecCommand(\"Bold\")

vil det virke som beregnet.

/Thor
Avatar billede roadrunr Nybegynder
22. august 2000 - 09:44 #11
Det lyder meget rigtigt. :)
Avatar billede dudal Nybegynder
22. august 2000 - 10:49 #12
Er det lykkedes nogen af jer at indsætte \"custom\" tags?

Altså noget i stil med:
range = myEditor.document.selection.createRange()
range = \"<myTag>\" + range + \"</myTag>\"

Det er det jeg ser som det største problem  med den.

Mvh
Jesper
www.builder.dk
Avatar billede jumper Nybegynder
22. august 2000 - 10:53 #13
dudal, kig på http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_TextRange.asp

range = myEditor.document.selection.createRange()

Ovenstående linje laver et TextRange objekt, og ud fra listen af Methods på ovenstående link finder man pasteHTML og på listen af Properties finder man htmlText, hvilket gør at du kan sige

range.pasteHTML(\"<mytag>\" + range.htmlText + \"</myTag>\")

/Thor
Avatar billede roadrunr Nybegynder
22. august 2000 - 10:59 #14
Vha. komponenten, kan man indsætte billeder(hvilket virker fint(for mig)). Men i stedet for at man finder et billede på sin egen harddisk - kan man så ikke lave en \"ting\", hvor man finder et billedet på serveren? I så fald, hvordan kan sådan noget laves?
Avatar billede krogstrup Nybegynder
22. august 2000 - 11:43 #15
(lytter)
Avatar billede jumper Nybegynder
22. august 2000 - 12:50 #16
Avatar billede roadrunr Nybegynder
23. august 2000 - 11:24 #17
jumper: jeg har lavet funktion som selv opretter links. Men hvordan kan jeg spcificere target?

Så at den kan åbne i nyt vindue?
Avatar billede jumper Nybegynder
23. august 2000 - 16:35 #18
roadrunr, det kan du ikke specificere direkte i kaldet til execCommand(\"CreateLink\").

Istedet kan du tilføje et target enten når du gemmer dokumentet eller lige efter du har indsat linket.

function AddTarget(){
  var l = myEditor.document.links;
  var ll = l.length;
  for (var i=0;i<ll;i++){
    l[i].target = \"_blank\"
  }
}

/Thor
Avatar billede roadrunr Nybegynder
05. september 2000 - 10:30 #19
takker for hjælpen.

kan du evt. fortælle mig hvordan jeg sætter en standard bgcolor i design-vinduet?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester