Avatar billede dont Nybegynder
29. marts 2003 - 16:04 Der er 17 kommentarer og
1 løsning

dhtml editor og "Insert Image"

Jeg bruger microsofts dhtml-editor og ved tryk på "Insert Image"-knappen vil jeg gerne have indsat et bestemt billede.
Jeg har ændre min image-funktion så den nu ser således ud:
---------------------------------------------
function DECMD_IMAGE_onclick() {
tbContentElement.ExecCommand(DECMD_IMAGE,OLECMDEXECOPT_DONTPROMPTUSER,'images/pic1.jpg');
tbContentElement.focus();
}
---------------------------------------------
Det virker fint bortset fra at editoren indsætter quotes i strengen så billedadressen faktisk bliver:
---------------------------------------------
images/pic1.jpgquote;
---------------------------------------------
og derfor bliver billedet selvsagt ikke vist på siden.
Er der nogle der tilfældigvis har oplevet det samme og har en løsning på det eller evt. bare det sidste ville jeg være meget taknemlig.
Avatar billede mortrr Praktikant
29. marts 2003 - 16:11 #1
Jeg tror du skal kigge på din kode igen.
Det er ikke noget den selv gør
Avatar billede dont Nybegynder
29. marts 2003 - 16:30 #2
nej det er funktionen:
---------------------
function encodeHTMLQuotes(strIn)
{
  var strOut;

  while (strOut != strIn)
  {
    strOut = strIn;
    strIn = strIn.replace('"', 'quote;');
  }

  return strOut;
}
---------------------
der sætter disse quotes. Problemet er at med quotes kan billedet ikke vises på den originale side (pic1.jpgquote; er ikke længere et billede)
og uden quotes kan html-koden ikke vises i editoren.
Altså: udkommenterer man funktionen encodeHTMLQuotes(strIn) gemmes billedstien fint og alt ser ok ud på siden, men næste gang man vil editere siden vises kun følgende i editoren:
<IMG src=

???
Avatar billede mortrr Praktikant
29. marts 2003 - 16:32 #3
strIn = strIn.replace('"', '&quote;');
Avatar billede mortrr Praktikant
29. marts 2003 - 16:33 #4
Forresten - den hedder kun &quot;
Avatar billede dont Nybegynder
29. marts 2003 - 16:33 #5
det er selvfølgelig fordi editoren "tror" koden er slut hvis den opdager et " inde i HTML'en. Derfor bytter den normalt " ud med quote;, hvilket er fint nok...........når det ikke ændrer på et filnavn.
Avatar billede mortrr Praktikant
29. marts 2003 - 16:36 #6
Ja, men den skal ikke skifte ud med "quote;" det skal være med "&quot;"
Avatar billede dont Nybegynder
29. marts 2003 - 16:36 #7
jeg har en idé om hvad du mener, men kunne du uddybe det lidt.
Skal jeg ændre i funktionen så det bliver sådan som du skriver eller?
Avatar billede mortrr Praktikant
29. marts 2003 - 16:38 #8
Ja
    strIn = strIn.replace('"', '&quot;');
Avatar billede mortrr Praktikant
29. marts 2003 - 16:38 #9
Eller
  strIn = strIn.replace('"', '&#34;');
Avatar billede dont Nybegynder
29. marts 2003 - 16:41 #10
ok, det fjerner ihvertfald quote fra jpg, men billedet bliver stadig ikke vist. Nu er stien ændret til:
images/pic1.jpg"
og " gør faktisk nu at det ikke bliver vist.
Avatar billede mortrr Praktikant
29. marts 2003 - 16:50 #11
Tror du ikke det er en arv fra da koden var forkert?
IE laver attributten/stien som
src="images/pic1.jpg"
altså quotes foran og bagefter.
Men hvis den ene har været væk kan hvad som helst ske hvis du loader og gemmer igen.

Forresten den kontrol du bruger, laver da vist altid absolutte stier, så du må næsten have et script som laver den om til en relativ sti.
Er du sikker på at den erstatter korrekt?
Det kunne være at den fjerner den foran-stillede ".
Avatar billede dont Nybegynder
29. marts 2003 - 17:01 #12
Den gemte side vises med et broken image. Når egenskaber for dette image vælges er stien
http://domænenavn/"images/pic.jpg"
det duer ikke.
Jeg overvejer at lave en
SAVEencodeHTMLQuotes(strIn)
som gør:
strIn = strIn.replace('quot;', '"');
og en
OPENencodeHTMLQuotes(strIn)
som gør:
strIn = strIn.replace('"', 'quot;');
Det virker faktisk allerede den ene vej, men jeg har lidt problemer med at få kørt html'en igennem OPENencode...... når jeg åbner editoren.
Avatar billede mortrr Praktikant
29. marts 2003 - 17:10 #13
Det eneste grund til at du har behov for at lave om på koden, som jeg lige kan komme i tanke om, er hvis du bruger en <input til at transportere koden fra server (fx asp) til klient. Her skal du lave " om til fx &quot;. Men ellers har du ikke behov for at lave om på noget som helst = du skal IKKE ændre noget kode når du lægger det tilbage i input'en.

Du kunne også bare bruge et textarea til at "transportere" din html-kode ud til klienten. Så slipper du helt for det bøvl.
Så er det kun </textarea> du skal gøre noget ved. (hvis du vil redigere formularer.
Avatar billede dont Nybegynder
29. marts 2003 - 17:29 #14
I min editor kaldes form.submit() med en <body onload> og på den måde hentes html-koden fra databasen og ind i editoren.
På hjemmesiden hentes koden ligeledes fra databasen.
fra editor til hjemmeside gemmes koden ved først at køre igennem quot-omdanneren og derefter sendes den til upload.asp der gemmer koden i databasen.
fra hjemmeside til editor hentes koden ved den omtalte <body onload="form.submit">
Min SAVEencodeHTMLQuotes(strIn) bevirkede at billederne nu BLEV vist på hjemmesiden.
Hvis jeg bare kunne få OPENencodeHTMLQuotes til at virke ville alt være ok.
Men ingen af de to ovenstående er måske nødvendige eller? Du siger jeg ikke behøver ændre noget?
Avatar billede mortrr Praktikant
29. marts 2003 - 17:34 #15
Det eneste tidspunkt du har behov for at lave noget om, er idet du laver den side som indeholder html-koden der skal proppes ind i editoren.

Jeg ved jo ikke hvordan din kode ser ud, men der kunne være noget lignende:
<form action="upload.asp" method="post">
<input type="hidden" name="htmlKodeTilRegigering" value="<%=HtmlKode%>">

Her er det kun variablen HtmlKode der skal encodes.
Og det er den jeg vil foreslå laves om til et textarea:
<form action="upload.asp" method="post">
<textarea style="display:none" name="htmlKodeTilRegigering"><%=HtmlKode%></textarea>

Når du henter fra feltet til/fra editoren er der ingen grund til at noget skal encodes. Det er jo reelt bare tekst som man kunne have indtastet direkte i et textarea.
Avatar billede dont Nybegynder
29. marts 2003 - 17:47 #16
Du gættede helt rigtigt med hensyn til min kode. Jeg var ikke klar over at man kunne skjule et textarea på samme måde som <input type> og havde derfor slet ikke overvejet at bruge det.
Har lige prøvet textarea og udkommenteret quote-funktionen og det virkede så du skal have mange tak for hjælpen. Du kan jo lige oprette et svar så du kan få nogle point. ;o)
Avatar billede mortrr Praktikant
29. marts 2003 - 18:07 #17
OK.
Avatar billede dont Nybegynder
29. marts 2003 - 18:14 #18
fedt du ikke gav op.
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