Avatar billede w13 Novice
12. juni 2007 - 13:42 Der er 14 kommentarer og
1 løsning

Knytte indhold af IFrame (wysiwyg-editor) til textarea

Hej Eksperter.

Jeg har i noget tid arbejdet på en wysiwyg-editor, hvor man redigerer indholdet i et IFrame. Lige nu er den dog ikke knyttet til et textarea i en form.

Nogle forslag til, hvordan jeg lettest/smartest knytter den til et textarea, sådan at det indtastede i IFramet overføres til næste side under textareaets navn ved klik på Submit?

På forhånd tak!
Avatar billede lestrata Nybegynder
12. juni 2007 - 15:28 #1
Hvordan dælen bære du dig ad med at indtaste noget i en IFrame?
Jeg ville da tro at det var et textarea man skulle indtaste i og så se resultatet i en IFrame..
nå, men hvad ved jeg..

Byg det hele op med en skjult frame, denne kan du så kan gemme IFrames indhold i når der bliver trykket på submit. Denne skjulte frame vil så også værre der på den næste og du kan så hente dataen derfra igen.
Avatar billede w13 Novice
12. juni 2007 - 15:59 #2
Jeg har kaldt givet mit IFrame id'et "wysiwyg" og indsæt js-koden:
document.getElementById("wysiwyg").contentWindow.document.designMode = "on";

På den måde kan man redigere indholdet af IFramen og flytte evt. billeder, knapper og lignende rundt. :) Virkelig smart!

Men hvordan ville du lave en skjult frame, som du skriver, der så også kan hentes på næste side?
Avatar billede lestrata Nybegynder
12. juni 2007 - 17:47 #3
Let nok men lidt sværre at forklare...
Lave et frameset der ser sådan ud, så har du din skjulte frame:
<html>
<head>
</head>

<frameset rows="*,0" frameborder="no">
  <frame src="WYSIWYG_editor.html" name="mainFrame">
  <frame src="about:blank" name="hiddenFrame">
</frameset>

<noframes><body>
</body></noframes>
</html>
Avatar billede w13 Novice
12. juni 2007 - 17:48 #4
Go' løsning! :) Mange tak!
Avatar billede olebole Juniormester
13. juni 2007 - 14:01 #5
<ole>

Hvorfor dog blande frames ind i dén løsning? Du kan da bare læse indholdet af iframe'en - og indsætte indholdet i et skjult felt i en form. Det er svært at se, hvad et frameset skal bruges til  =)

/mvh
</bole>
Avatar billede w13 Novice
13. juni 2007 - 17:00 #6
Hvornår ville du overføre indholdet af IFramen?
Avatar billede lestrata Nybegynder
13. juni 2007 - 23:34 #7
Det kan godt værre at du har ret Ole, jeg tænkte bare at der nok var begrænsninger på hvor meget indhold der kan være i et form-felt, men det kan da godt værre at der ikke er det.
w13 - Ole's løsning er nok den mest korrekte.
Avatar billede w13 Novice
13. juni 2007 - 23:38 #8
Normalt bruger jeg ikke frames, men nu er det sådan, at min side allerede er bygget op i frames for en gangs skyld, så din løsning passede perfekt. Desuden tager olebole nok ikke imod pointene og du kan i hvert fald få dem for din hjælp. :) Så opret du et svar.
Avatar billede olebole Juniormester
14. juni 2007 - 13:35 #9
Jeg bruger ikke selv færdig-kodede editors, men såvidt jeg husker, er den, der hedder htmlArea, bygget over et textarea. Under alle omstændigheder skal det være et _meget_ langt dokument, hvis ikke det kan sendes/opbevares i et textarea.

- og hvad skulle man egentlig bruge en editor til, hvis man ikke kunne poste indholdet til en server via et felt i en form?  ;o)
Avatar billede w13 Novice
14. juni 2007 - 13:42 #10
Jo, altså.. Editoren er også en, som jeg har lavet selv. (Egentlig er det en, som du og jeg har lavet selv, Ole, da du har hjulpet mig med flere af de ting, jeg ikke havde arbejdet med før.)

Jeg benytter et IFrame til at lade brugeren redigere indholdet og har hidtil kun arbejdet på at gøre dette funktionelt.
Nu skal det så gerne overføres til næste side, og ja, det skal helst ske i et textarea, men hvornår ville du overføre fra IFrame til Textarea?

Jeg ville jo helst en kode, som ikke først gjorde dette ved submit, sådan at man kan refere til textareaet i stedet for IFramet med javascript i sin kode, hvis det nu skulle blive nødvendigt.
Avatar billede olebole Juniormester
14. juni 2007 - 13:59 #11
Hehe ... så må jeg først bede lestrata sætte sig ned og tage en Fontex  :D

Normalt er jeg strid (læs: fundamentalistisk) modstander af at benytte innerHTML - men da alle editor-funktionaliteterne i forvejen ligger milevidt fra alle standarder, sker der ikke den store skade ved at bruge den her (der er typsik heller ingen element-referencer, der kan overskrives i en editor).

Derfor kunne du jo skrive noget à la:

var oInp = document.getElementById("et_eller_andet_textarea");
var oCont = document.getElementById("wysiwyg").contentWindow.document.body;
oInp.value = oCont.innerHTML;
Avatar billede w13 Novice
14. juni 2007 - 14:04 #12
Jaeh, det bliver nok sådan noget. Men kan jeg virkelig først bruge dette ved submit? Jeg håbede, at mit skjulte textarea kunne indeholde dette undervejs i brugen af editoren nemlig.
Avatar billede olebole Juniormester
14. juni 2007 - 14:10 #13
Faktisk har jeg skrevet en 'oprenser' til den slags, som fungerer 'kanont' ... uden innerHTML. Den hører til i min 'madkasse' (de få ting, jeg yderst nødigt deler - da jeg jo også selv skal leve), men jeg kan da sige så meget, at den traverserer editor'ens DOM og opretter tilsvarende elementer i et abstrakt XML-dokument.
Til slut serialiseres XML-dokumentet - hvis case, man jo selv styrer, når man opretter elementer (som oftest lowerCase) - og jeg har så skrevet et par algoritmer, der styrer linjeindrykning, hvis man har valgt 'pæn udskrift' (ellers udskrives blot på én linje).

Det er ikke helt ligetil, men det kan lade sig gøre. I første omgang vil jeg dog absolut råde til at bruge innerHTML (selvom lestrata aldrig havde troet, han skulle opleve det)  ;D
Avatar billede w13 Novice
14. juni 2007 - 14:15 #14
Ok. innerHTML for nu. Og så en dag, når jeg har liidt bedre styr på traversering af DOM måske! :P
Avatar billede olebole Juniormester
14. juni 2007 - 14:15 #15
w13 >> du kan have 278 skjulte textareas liggende, hvis du vil ... og således gerne et til midlertidig opbevaring af data  ;o)

- og så behøver det i øvrigt slet ikke at være et textarea. Det kan være et hvilket somhelst element (så sætter du bare ikke dets indhold med 'value' - men med innerHTML). Jeg nævnte blot textarea'et, så du også kunne bruge det til at poste mod serveren med ... men det kan du selvfølgelig ændre alt efter resten af din opbygning  =)
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