Avatar billede wagner Nybegynder
17. januar 2003 - 11:59 Der er 24 kommentarer og
1 løsning

Prædefineret tekst i DHTML Editor

Jeg har oprettet en wysiwyg editor med microsofts DHTML Editor component. Denne editor vil jeg gerne have til at arbejde sammen med en database. Jeg kan uden problemer gemme i min database, men jeg kan ikke få vist indhold fra min database i min editor, når jeg åbner en side.

Jeg har forsøgt at skrive en javascript funktion, der benytter sig af createRange, men det virker ikke.

Er der nogen, der har har erfaringer med dette component?

Wagner
Avatar billede josini Nybegynder
17. januar 2003 - 12:19 #1
Kan man komme til at se den i funktion?
Avatar billede bobbedude Nybegynder
17. januar 2003 - 12:22 #2
I min editor bliver feltet hvor man opretter sin tekst vist gennem en Iframe den side der bliver kaldt i denne hedder IE_textbox.asp.

når jeg skal rette en tekst sender jeg en parameter med til denne IE_textbox.asp?mode=edit&id=12 så har jeg i selve IE_textbox.asp siden bare et lille script der siger.

If request.querystring("mode")="edit" then
SQL = "Select * from TABEL Where ID = "&request.querystring("id")&" "
set rs = Connect.Execute(SQL)
end if

Håber du forstår
Avatar billede wagner Nybegynder
17. januar 2003 - 12:50 #3
Jeg kan ikke rigtig komme til at vise min side, men jeg benytter teknikken fra denne artikel:
http://www.html.dk/artikler/00030/SAMPLES/Web/WebApp/builded.htm

>> Bobbedude
Jeg forstår hvad du mener, men mit problem er at ikek at læse ud af databasen, men problemet er at få skrevet det ud i mit dokument. Jeg bruger et cgi program til at hente data i min db, men jeg ved ikke hvordan jeg viser dem på min side.
Avatar billede wagner Nybegynder
17. januar 2003 - 12:58 #4
Hvis jeg skal konkretisere mit problem yderligere, så kan i på ovenstående link se, at der står :
This is a release note.
som standard, når man åbner siden. Hvordan får man den værdi til at blive vist, når siden åbnes?
Avatar billede edutasia Nybegynder
17. januar 2003 - 13:26 #5
Der er en funktion ved navn "MENU_FILE_OPEN_onclick()", som bliver indlæst i onload (sammen med en masse andet). Den loader blot indholdet af en HTML-fil - som i dette tilfælde er teksten "This is a release note".

Du kan ændre funktionen, så den indlæser en fil, du selv bestemmer navnet på. Det er én måde at indsætte prædefineret indhold på, men den kræver altså en fil.

En anden måde er at sætte tekstfeltets innerHTML-property. Det foregår, så vidt jeg kan se, sådan her:

  selection = tbContentElement.DOM.selection.createRange();
  selection.pasteHTML(customHTML);

Hvor "customHTML" er HTML-koden, du vil indsætte.
Avatar billede edutasia Nybegynder
17. januar 2003 - 13:29 #6
Ups - det gik lidt for hurtigt. Det er sådan her, du sætter innerHTML (men den anden metode virker vist også - den paster bare HTML i stedet):

  tbContentElement.DOM.body.innerHTML = customHTML;
Avatar billede wagner Nybegynder
17. januar 2003 - 13:39 #7
>>edutasia

Jeg prøver lige med innerHTML. Kan jeg bare tilføje det i den metode, der bliver loadet ved start?
Avatar billede wagner Nybegynder
17. januar 2003 - 13:55 #8
Det virkede sådan set med innerHTML, men teksten bliver kun vist et øjeblik, så forsvinder den igen.

Jeg har placeret min kode øverst i window_onload().

Nogle gode ideer?
Avatar billede edutasia Nybegynder
17. januar 2003 - 14:13 #9
Jeg vil tro, at du blot skal flytte den ned i bunden, så det er det sidste, den gør onload.
Avatar billede wagner Nybegynder
17. januar 2003 - 14:25 #10
Nej, det hjalp desværre ikke.

jeg prøver at kigge, om der bliver kaldt noget script efter onload.
Avatar billede websmith Nybegynder
17. januar 2003 - 14:35 #11
Jeg har selv lavet en sådan, og den fungerer perfekt. Det du skal gøre er følgende:
var cntElement;
cntElement=document.getElementById("tbContentElement"); //Dvs. din editor control
var selection = cntElement.DOM.selection.createRange();
/*Brug paste html med indholdet af et standard hidden input field*/
selection.pasteHTML(document.forms[0].elements['content'+what].value);
tbContentElement.focus();

Dette fungerer for mig, jeg har den fedeste editor som kan skrive til databasen og hente derfra.
Avatar billede wagner Nybegynder
17. januar 2003 - 14:37 #12
>>websmith
Det lyder fedt, men hvor skal jeg skrive det? window_onload()?
Avatar billede websmith Nybegynder
17. januar 2003 - 14:37 #13
Jeg har lavet et script nederst på siden som kalder nogle funktioner som gør ovenstående, og forinden sletter den indholdet i feltet med følgende:

DECMD_SELECTALL_onclick();
DECMD_DELETE_onclick();

Som er de funktioner som er tilgængelige.
Avatar billede websmith Nybegynder
17. januar 2003 - 14:39 #14
Dvs. Aller nederst i koden:

<script>
...ovenstående kode...
</script>

Jeg tror at onLoad bliver kaldt før end hele siden er helt førdig med at loade, dvs. DHTML-editoren er ikke fuldstændig initialiseret.
Avatar billede wagner Nybegynder
17. januar 2003 - 14:40 #15
okay, skal det stå før eller tollbars.js bliver loaded?
Avatar billede websmith Nybegynder
17. januar 2003 - 14:42 #16
Som det allernederst på siden, lige før </html>
Avatar billede wagner Nybegynder
17. januar 2003 - 14:48 #17
Det virker stadig ikke.
Min kode bliver fint kørt igennem, men teksten vises ikke.
Jeg har bare lavet et hidden felt med et vilkårligt navn, og skrevet min værdi i dets value.
Avatar billede wagner Nybegynder
17. januar 2003 - 14:52 #18
Har du eventuelt din editor online, så jeg kan kigge lidt i koden.
Avatar billede websmith Nybegynder
17. januar 2003 - 14:54 #19
Som det første gør jeg følgende:

DECMD_SELECTALL_onclick();

Dvs.
var cntElement;
DECMD_SELECTALL_onclick();
DECMD_DELETE_onclick();
cntElement=document.getElementById("tbContentElement");
var selection = cntElement.DOM.selection.createRange();
selection.pasteHTML(document.forms[0].elements['content'+what].value);
tbContentElement.focus();

Prøv eventuelt at indsætte en tekst konstant, dvs.
selection.pasteHTML('Test teksten');

Det skal fungere :)

Måske har det noget med dine internet sikkerheds instillinger. Du kan jo prøve at fidle lidt med det, så det site du sidder og arbejder på kommer med i dint trusted sites, eller i dit intranet.

Prøv eventuelt også at lave en alert imellem hver linie, for at se om den alligevel får kørt al koden.

Du kan også prøve med en
try
{
... al koden..
}
catch(err)
{
alert(err.message);
}
Avatar billede websmith Nybegynder
17. januar 2003 - 14:54 #20
Nope min editor kører på et intranet, så den kan du ikke tilgå.
Avatar billede wagner Nybegynder
17. januar 2003 - 14:59 #21
Jeg prøver at lege lidt med det. Det er dog mærkeligt, at min tekst bliver vist et kort øjeblik for derefter at forsvinde igen.
Avatar billede wagner Nybegynder
17. januar 2003 - 16:00 #22
Jeg har testet lidt, men uden meget held. Ved hjælp af alerts kan jeg se, at alle linier kode bliver kørt igennem. Hvis jeg sætter en try catch på, så kommer der en tom fejlmeddelelse.

Mit conElement bliver loadet med et object og jeg har ingen probelemer med at se værdien fra mit hidden felt vha en alert. Jeg kna kun se at problemet kan ligge i createRange eller i pasteHTML. Kan man gøre det anderledes?
Avatar billede wagner Nybegynder
17. januar 2003 - 16:03 #23
Fuck, jeg trykkede på den forkerte knap da jeg ville afvise bobbedudes svar. Jeg skal nok få oprettet et nyt spørgsmål senere, så edutasia og websmith kan få deres point. Bobbedudes, kan jeg evt. få dig til at give to de personer pointene?

Beklager
Avatar billede bobbedude Nybegynder
20. januar 2003 - 07:58 #24
Det er iorden jeg har oprettet et spørgsmål med Prædefineret tekst i DHTML Editor point tilbage som overskrift.

REF: http://www.eksperten.dk/spm/307276
Avatar billede wagner Nybegynder
20. januar 2003 - 12:40 #25
Tusind tak bobbedude, og undskyld ulejligheden.

Jeg har iøvrigt fået løst problemet. Det viste sig at en variabel docInit skulle sættes til true ellers loades et tomt dokument efter siden er loadet.

Tak for hjælpen allesammen
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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