Avatar billede sj.netomia Nybegynder
23. maj 2007 - 18:01 Der er 5 kommentarer og
1 løsning

forecolor og focus på wysiwyg feltet og onfocus fra <select>

Hej Eksperter.

Jeg har et problem med mit wysiwyg.

Jeg har denne funktion.
function doColor(fColor)
  {
    if(fColor != '')
      document.execCommand('forecolor', false, fColor);
    else {
      var hex = prompt('Skriv en ny farveværdi her..', '');
      document.execCommand('forecolor', false, hex);
      }
  }

mit wysiwyg ligger i div. <div id="wysiwyg"
contentEditable="true" class="adminWYSIWYG" align="left">

Jeg kører funktionen sådan her.

<select class="menu" name="selColor" onBlur="doColor(this.options[this.selectedIndex].value)" return false; style="font-family: verdana; font-size: 7pt; font-weight: bold;">
                        <option value="#000000" selected>Farve</option>
                        <option value="#000000" class="farve1"></option>
                        <option value="#993300" class="farve2"></option>
osv....

Men når jeg skriver og vælger en farve, så kommer makøren ikke tilbage til mit wysiwyg div, før jeg trykker på feltet igen, hvordan kan det være og er der en smart måde at lave det på ?`

Skriv endelig hvis i ikke forstår mit spørgsmål, jeg har set på phoenixv's wysiiwyg at den har funktionen, men kan ikke gennemskue hvordan det bliver lavet....

På forhånd tak for jeres hjælp :-)
Avatar billede w13 Novice
23. maj 2007 - 21:01 #1
Jeg arbejder netop på min egen Wysiwyg-editor, og tror godt, jeg kan hjælpe dig.

Du skal blot sætte focus på dit div-element, inden execCommand udføres. Dvs.:
-----------------------------------------
function doColor(fColor)
  {
    document.getElementById('wysiwyg').focus();

    if(fColor != '')
      document.execCommand('forecolor', false, fColor);
    else {
      var hex = prompt('Skriv en ny farveværdi her..', '');
      document.execCommand('forecolor', false, hex);
      }
  }
-----------------------------------
Håber du får det til at virke. :)
Avatar billede w13 Novice
23. maj 2007 - 21:03 #2
Jeg har i øvrigt sat den til at sætte focus hver gang jeg kalder execCommand. Det gør jeg ved i stedet at kalde funktionen "ExecCommand", dvs. med stort forbogstav. Den funktion er så:
1) sæt focus.
2) kald den rigtige execCommand med de parametre, der blev overført fra funktionskaldet.
Avatar billede sj.netomia Nybegynder
23. maj 2007 - 22:52 #3
det virker desværre ikke. har du et andet forslag ?
Avatar billede sj.netomia Nybegynder
24. maj 2007 - 00:02 #4
jeg har lige et lille tillægs spørgsmål hvis du vil svarer.

Jeg har lavet min højde og bredde på mit <div> til wysiwyg med css.

WIDTH: 630px;
HEIGHT: 650px;

Kan man lave sådan at width er fixed, altså du den selv deler teksten efter 630px og skriver videre på næste linie ?
Avatar billede sj.netomia Nybegynder
24. maj 2007 - 00:03 #5
jeg fik

function doColor(fColor)
  {
    document.getElementById('wysiwyg').focus();

    if(fColor != '')
      document.execCommand('forecolor', false, fColor);
    else {
      var hex = prompt('Skriv en ny farveværdi her..', '');
      document.execCommand('forecolor', false, hex);
      }
  }


til at virke, jeg havde brugt onBlur og jeg skulle bruge OnChange i stedet for. Men hvis du kan svarer på mit lille tillægsspørgsmål vil jeg blive meget glad.... mange tak for hjælpen. :-)
Avatar billede w13 Novice
24. maj 2007 - 00:33 #6
Jep, med en overflow.
overflow: auto;
"auto" bruger scrollbars, når der står for meget.
"hidden" lader bare teksten forsvinde i bunden, når der ikke kan stå mere.
"scroll" sætter permanente scrollbars ind. :)
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