Avatar billede tblaster Nybegynder
16. marts 2003 - 13:28 Der er 31 kommentarer og
2 løsninger

Dhtml editor component

Jeg benytter mig af følgende for at hente teksten fra min Dhtml editor:

<form NAME="UploadForm" action="../admin.asp?mode=editor" method="POST">
<input type="hidden" name="UploadDocument">
</form>

<textarea cols="79" rows="13" name="nyhed"><%=Request.Form("UploadDocument")%></textarea>

Er det muligt at overføre teksten den anden vej, altså over til min Dhtml editor? Og hvordan gøre det?
Avatar billede olebole Juniormester
16. marts 2003 - 18:28 #1
Avatar billede tblaster Nybegynder
18. marts 2003 - 15:32 #2
Det er jo ikke det samme problem jeg har som han har ... jeg kan fint gemme min data ... jeg overfører det til en anden side og gemmer det så i en database. Det jeg så gerne vil er at jeg kan hente dataen igen og så rediger den. Dataen hentes via en side hvor den så kan gemmes i en eller anden varriabel og så skal det være sådan at når man åbner editoren så skal teksten automatisk komme op som hvis man brugte almindelig asp med en response.write session("et eller andet")
Avatar billede mortrr Praktikant
18. marts 2003 - 17:01 #3
Det er en kende besværligt, men ikke umuligt.
Hold øje med enten readyState eller Busy på din editor.
Det sikreste er Busy.

Det kunne gøres med noget der ligner:
<script>
var tbContentElement=DinEditor;
actInit=false;
function TryInit() {
  if (!tbContentElement.Busy) {
    window.clearInterval(actInit);
    tbContentElement.DocumentHTML  = DitTextArea.value;
  }
}
function InitDHTML() {
  actInit = window.setInterval(TryInit,50);
}
</script>
<body onload="InitDHTML()">
Avatar billede tblaster Nybegynder
18. marts 2003 - 17:11 #4
Overstående ar jeg ikke lige med på ... Måske forstår jeg det ikke ellers har jeg ikke gjort mit problem klart nok. Jeg prøver lige for en sikkerhed igen.

Jeg har en side 1.asp hvorpå jeg har en textarea med navnet "nyhed":
<textarea cols="79" rows="13" name="nyhed></textarea>

Derudover har jeg så en knap man kan trykke på der stå åbner en DHTML editor. Det jeg så gerne vil have er at den tekst der står i textareat overføres til DHTML editoren når man åbner den. Hvordan kan dette gøres?
Avatar billede mortrr Praktikant
18. marts 2003 - 17:19 #5
Det er også det jeg har beskrevet.

Problemet ligger i at din editor ikke er klar før lidt efter siden er loadet. Derfor er man nødt til at vente lidt til den er klar.
Ved onload kaldes InitDHTML som får TryInit til at kigge på om tbContentElement er Busy hvert 0.05 sekund.
Når den ikke er busy mere lægges value fra dit textarea over i DocumentHTML.
Avatar billede olebole Juniormester
18. marts 2003 - 17:31 #6
tblaster >> Jeg ved udmærket, det er et helt andet problem ... og dog ...(?)  :)
Det, jeg henviste til, var nærmere min kommentar (16/03-2003 18:22:22) i spørgsmålet. Det grundlæggende problem, de fleste har med editoren, er nemlig som oftest det samme: At man ksater sig ud i at kode på den uden de nødvendige kundskaber - og uden lyst til først at erhverve disse. Derfor bliver næsten alle spm. om den meget lange og fyldt med misforståelser.
Punkt ét, når man skal rode med den, er at blive rigtig god til JS og temmelig god til et serverside sprog. Ellers fatter man ikke meget af, hvad der foregår - og så er der ikke den store mening med at bruge den.
Det var bare det, jeg ville sige  :)
/mvh
Avatar billede tblaster Nybegynder
18. marts 2003 - 17:33 #7
Nu har jeg indsat det i starten af min editor så det ser således ud:

<html>
<head>
<title>Editor</title>

<body onload="InitDHTML()">

<script>
var tbContentElement=DinEditor;
actInit=false;
function TryInit() {
  if (!tbContentElement.Busy) {
    window.clearInterval(actInit);
    tbContentElement.DocumentHTML  = nyhed.value;
  }
}
function InitDHTML() {
  actInit = window.setInterval(TryInit,50);
}
</script>

Men teksten overføres ikke. Jeg har ikke ændret i min side med textareaet ...
Avatar billede olebole Juniormester
18. marts 2003 - 18:02 #8
Avatar billede mortrr Praktikant
18. marts 2003 - 18:33 #9
Du skal altså lige tilpasse det til din editor.
DinEditor skel skiftes ud med hvad den rent faktisk hedder.
og nyhed skal skiftes ud med en reference til din textarea.
Avatar billede tblaster Nybegynder
18. marts 2003 - 18:55 #10
DinEditor ... det der skal stå der er det det mit textarea hedder eller hva?

Og hvad mener du med en reference til mit textarea?
Avatar billede mortrr Praktikant
18. marts 2003 - 19:02 #11
DinEditor er komponenten.
Du kalder den vist tbContentElement, så du kan bare fjerne linien.

Referencen til din textarea kunne være fx document.getElementById("Nyhed"), hvis dit textarea hedder nyhed.

Der vil desuden være forskel på om du skal bruge DocumentHTML eller DOM.body.innerHTML alt efter hvad du henter tilbage til databasen.
Avatar billede tblaster Nybegynder
18. marts 2003 - 19:36 #12
Mit textarea hedder nyhed. Jeg har ænderet det og har nu følgende:

<html>
<head>
<title>Editor</title>

<body onload="InitDHTML()">

<script>

actInit=false;
function TryInit() {
  if (!tbContentElement.Busy) {
    window.clearInterval(actInit);
    tbContentElement.DocumentHTML  = document.getElementById("Nyhed").value;
  }
}

function InitDHTML() {
  actInit = window.setInterval(TryInit,50);
}

</script>
...

Men den henter ikke teksten fra min forgående side ind :-( Jeg har prøvet at ændre DocumentHTML til DOM.body.innerHTML
Avatar billede mortrr Praktikant
18. marts 2003 - 19:49 #13
Fra din foregående side?

Du skal jo have den med på den nuværende side, ellers kan scriptet jo ikke se den. Det er derfor du får en fejl i linie 9.

Den anden fejl kommer fordi du i DisplayChanged har
  if ("complete" == document.readyState && false == docInit)
  {
    docInit = true;
    MENU_FILE_OPEN_onclick();
  }
Du kan godt bruge den metode, den er bare lidt "flaky".
Hvis du vil det, skal du ændre den location der åbnes.
Avatar billede tblaster Nybegynder
18. marts 2003 - 19:53 #14
kan jeg så gøre så jeg henter dataen fra en gemt session? Det er altså denne jeg taler om:

document.getElementById("Nyhed")

En session i stil med:
Session("Nyhed")

Kan jeg bare slette det du omtaler i overstående?
Avatar billede mortrr Praktikant
18. marts 2003 - 20:03 #15
Mja - det kunne man gøre, men det er et fjollet sted at gemme den.
Man kunne også indsætte fx en textarea i editoren som indeholder den tekst du har brug for.

mht "ovenstående" så bare kommenter linien med MENU_FILE_OPEN_onclick().
(sæt // foran)
Avatar billede tblaster Nybegynder
18. marts 2003 - 20:09 #16
Men den tekst jeg har brug for et noget jeg henter fra en database ... så det er ikke den samme hver gang ..
Avatar billede tblaster Nybegynder
18. marts 2003 - 20:19 #17
Jeg får denne fejl:

Et objekt er obligatorisk

Det skulle ligge i denne:

tbContentElement.DocumentHTML  = document.getElementById("Nyhed").value;
Avatar billede mortrr Praktikant
18. marts 2003 - 21:27 #18
Selvfølgelig får du en fejl, når du ikke har elementet.

Og du kan sagtens hente fra databasen. fx ved blot at lave din "editor" om til et asp-dokument, kalde den med id på nyheden og hente den som når du viser nyheden normalt.
Avatar billede tblaster Nybegynder
18. marts 2003 - 22:01 #19
Jeg har prøvet med:
<% nyhed = Session("nyhed") %>
tbContentElement.DocumentHTML = nyhed.value;

Men så siger den bare at nyhed ikke er defineret. Men det er den jo eller hva?
Avatar billede tblaster Nybegynder
18. marts 2003 - 22:03 #20
Har også prøvet med:
<% nyhed = "test" %>
Men det giver det samme :-(
Avatar billede mortrr Praktikant
18. marts 2003 - 22:55 #21
Du skal vist til at læse lidt mere om javascript, DOM og server kontra client-side script.

<% nyhed = "test"%>
eller lignende, opretter en variabel på serveren som hedder nyheder.
Den eksisterer altså ikke i klienten.

Du kunne, for sjov skyld, bruge
<% ServerNyhed = "test" %>
KlientNyhed="<%=ServerNyhed%>";
Her har du en variabel på serveren, og overfører værdien til klienten.

Men, med den metode vil du hurtigt løbe ind i problemer med linieskift og lign.
Derfor bruger man ofte et eller andet afgrænset element som er rimeligt ubegrænset mht indhold.
Fx et textarea, som kan eksistere på samme side som du skal bruge indholdet. Her behøver man nærmest kun at tage højde for om der står </textarea> i den tekst man udfylder den med.

Du kan altså bruge:
<textarea id="nyhed"><%=Session("nyhed")%></textarea>

og så et eller andet sted i initialiseringen af siden:
tbContentElement.DocumentHTML = nyhed.value;

Men find nu på noget andet end at bruge en session-variabel.
Hvis det alligevel er en asp, så kan du lige så godt hente fra databasen.
Avatar billede tblaster Nybegynder
19. marts 2003 - 17:15 #22
Jeg kan godt forstå hvad du mener ... men jeg har det problem at med følgende:

<textarea id="nyhed"><% = session("nyhed") %></textarea>

Så får jeg denne fejl:
Procedurekaldet eller argumentet er ugyldigt

Hvis jeg bare skriver:
<textarea id="nyhed">Test</textarea>

Så er der ingen problemer ... så virker det fint! Hvad kan fejlen være? Der er jo intet galt med den måde min session hentes på.
Avatar billede tblaster Nybegynder
19. marts 2003 - 18:03 #23
Kan du huske det der:

  // Load the initial release note into the content element
  // Make sure the document that this document (builded.htm)
  // has been loaded so that the BuildNumber.value is initialized
  if ("complete" == document.readyState && false == docInit)
  {
    docInit = true;
    MENU_FILE_OPEN_onclick();
  }

function MENU_FILE_OPEN_onclick() {

  if (window.location.href.substring(0, 7) == "file://")
  {
    alert("This sample requires a web server to submit release notes. " +
            "Please see the file readme1.htm in the Samples directory " +
            "of the DHTML Editing Component SDK for " +
            "details on how to run this sample from a web server.");

    return;
  }
 
  tbContentElement.LoadURL(window.location.href.substring(0, window.location.href.lastIndexOf("/")) + "/relnotes/" + BuildNumber.value);
  tbContentElement.focus();
}

Jeg bruger ikke det der BuildNumber pis men jeg kan ikke fjerne det uden at få fejl :-(

Den sletede jeg jo bare men det var nok ikke for smart ... jeg har lige fundet ud af at jeg ikke kan gemme teksten hvis jeg ikke har den med. Hvad skal jeg ændre den til?

Jeg tror jeg har fået det andet til at virke men det er lidt svært at teste når siden har overnævnte fejl :-)
Avatar billede mortrr Praktikant
19. marts 2003 - 18:22 #24
// Load the initial release note into the content element
  // Make sure the document that this document (builded.htm)
  // has been loaded so that the BuildNumber.value is initialized
  if ("complete" == document.readyState && false == docInit)
  {
    docInit = true;
//    MENU_FILE_OPEN_onclick();
  }

function MENU_FILE_OPEN_onclick() {

  if (window.location.href.substring(0, 7) == "file://")
  {
    alert("This sample requires a web server to submit release notes. " +
            "Please see the file readme1.htm in the Samples directory " +
            "of the DHTML Editing Component SDK for " +
            "details on how to run this sample from a web server.");

    return;
  }
 
//  tbContentElement.LoadURL(window.location.href.substring(0, window.location.href.lastIndexOf("/")) + "/relnotes/" + BuildNumber.value);
  tbContentElement.focus();
}

Og så kunne du evt kalde InitDHTML lige efter
    docInit = true;

så den del bliver:
// Load the initial release note into the content element
  // Make sure the document that this document (builded.htm)
  // has been loaded so that the BuildNumber.value is initialized
  if ("complete" == document.readyState && false == docInit)
  {
    docInit = true;
    InitDHTML();
  }
Avatar billede dont Nybegynder
27. marts 2003 - 20:55 #25
hej igen tblaster denne gang kan jeg måske hjælpe dig, da jeg har haft held med ovenstående siden du tidligere hjalp mig med at gemme i databasen.
Det jeg har gjort er en blanding af mange svar her på eksperten.
Jeg skal prøve at gøre det rigtig nemt at følge anvisningerne. Vi starter med at have en ORIGINAL "builded.htm"-fil.
1. builded.htm omdøbes til builded.asp
2. følgende type <form> indsættes i builded.asp
<form NAME="sendMinHTML" action="BUILDED.asp" method=POST>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("db.mdb")
Conn.Open DSN
'TABEL NEDENFOR BYTTES EVT. UD MED Request.Querystring("tabel")
strSql = "SELECT * FROM TABEL"
Set rs = Conn.Execute(strSQL)
%>
<input type="hidden" name="HentetHTML" value="<%= rs("htmlSide1") %>">
</form>
3. <body>-felt ændres <body onload="sendMinHTML.submit()">
4. HER SKAL MORTRR HAVE GANSKE MANGE TAK:
nedenstående kode tilføjede jeg lige over linie:
function InsertTable() {
(betydningen er sikkert ikke så stor)
------------------------------------------
actInit=false;
function TryInit() {
  if (!tbContentElement.Busy) {
    window.clearInterval(actInit);
    tbContentElement.DocumentHTML  = document.getElementById("hentetHTML").value;
  }
}
function InitDHTML() {
  actInit = window.setInterval(TryInit,50);
}
----------------------------------------------
5. Derefter gjorde jeg igen som Mortrr sagde og udkommenterede:
//    MENU_FILE_OPEN_onclick();
6. og som det sidste tilføjede jeg
InitDHTML();
under docInit = true;
(også tak til Mortrr)

HÅBER DET VIRKER (AT JEG IKKE HAR GLEMT NOGET ELLER SKREVET FORKERT). Ellers sig endelig til.
Avatar billede dont Nybegynder
27. marts 2003 - 21:10 #26
Nedenstående kommentar er hverken ment som bidrag til fremtidig mudderkastning eller som en ondsindet kommentar der skal skade nogen, men udelukkende som et billede på min personlige (og måske andres) holdning til hvad der, efter min mening, er alt for meget af på eksperten.
olebole: Tænk at du kan have så ondt et vist sted, at du gider sidde og rive dig selv i håret over folks spørgsmål.
Lad dog folk spørge om det de vil, sålænge der er nogle der, i modsætning til dig, gider at svare dem, er det da deres sag.....hvilket bringer mig til din anden kommentar her på siden:
Kommentar: olebole
18/03-2003 18:02:15            SÅ SØG DOG!
SLAP DOG AF! (Jeg forestiller mig hvordan du sidder derhjemme foran skærmen og bliver mere og mere rød i hovedet af raseri over at folk ikke følger din lommebogscomputermoral, som åbenbart indeholder det paradoks at folk ikke bør stille spørgsmål om noget de ikke ved noget om.)
PEACE ;o)))))
Avatar billede tblaster Nybegynder
01. april 2003 - 16:05 #27
dont ... jeg har prøvet det du skrev lige ændret punkt 2 til dette:

<body LANGUAGE="javascript" onload="sendMinHTML.submit()">

<form NAME="sendMinHTML" action="index.asp" method=POST>
<input type="hidden" name="HentetHTML" value="DENNE SKAL HENTES FRA EN SESSION">
</form>

Men så står den jo bare hele tiden og genloader siden :-(
Avatar billede dont Nybegynder
01. april 2003 - 16:18 #28
jeg ved desværre ikke så meget om hvordan man henter data fra sessions.
ovenstående var bare hvordan jeg fik editoren til at virke. (med undtagelse af insert image-funktionen.... http://www.eksperten.dk/spm/335935)
Håber du finder ud af det.
Avatar billede tblaster Nybegynder
01. april 2003 - 20:14 #29
dont ... det med sessionen skal du bare glemme ... hvis du bare kan hjælpe mig med at få siden til at virke hvor den har følgende:
<input type="hidden" name="HentetHTML" value="Et eller andet">

Så den altså skrive et eller andet på siden ... så kan jeg fint selv finde ud af det med sesssionen ... problemet i det du skrev er at den bliver ved med at realoade siden!
Avatar billede dont Nybegynder
01. april 2003 - 23:02 #30
Når jeg tjekker min vejledning ser den ud fuldstændig som jeg har gjort for at få det til at virke. Jeg ved derfor ikke hvad der kan være galt med dit dokument.
Avatar billede tblaster Nybegynder
02. april 2003 - 15:46 #31
er der mulighed for at du enten kan poste hele din kode eller sende den til mig så jeg kan se om jeg kan bruge det til noget?
Avatar billede tblaster Nybegynder
08. juli 2003 - 11:36 #32
Jeg har endelig fået tid til at arbejde med min editor igen og har kigget på tingene og fået samlet det hele lidt sammen. Jeg er kommet lidt videre men er gået istå igen da jeg får følgende fejl:

This sample requires a web server to submit release notes. Please see the file readme1.htm in the Samples directory of the DHTML Editing Component SDK for details on how to run this sample from a web server.

Jeg takker for jeres hjælp indtil nu og håber at I vil hjælpe mig færdig. Jeg har oprettet et frisk spørgsmål for at gøre det mere overskuelig.

http://www.eksperten.dk/spm/373921
Avatar billede tblaster Nybegynder
08. juli 2003 - 11:36 #33
.
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