Toon posts:

[JS] Probleem met colorpicker

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Inleiding
Normaal script ik altijd in PHP, en ik ben dus een JS newbe.
Ik heb een kant en klaar scrippie gedownload, eruit geplukt wat ik nodig had, en nu wil ik iets toevoegen.
Dat is nogal tricky blijkt, want ik heb nu zo'n vier uur zitten klungelen met hetzelfde resultaat.

Probleemstelling
code:
1
2
3
4
5
6
7
8
9
10
11
function cmdExec(cmd,opt) 
{
      if (isHTMLMode)
    {
        alert("Please uncheck 'Edit HTML'");
        return;
    }
    
      idContent.document.execCommand(cmd,"",opt);
    idContent.focus();
}

Gecombineerd met deze:
code:
1
2
3
4
5
function foreColor()
{
    var arr = showModalDialog("selcolor.htm","","font-family:Verdana; font-size:12; dialogWidth:30em; dialogHeight:34em" );
    if (arr != null) cmdExec("ForeColor",arr);  
}

Popt een schermpje met een zooitje prefab kleurtjes op. Je klikt op 1, en je tag wordt
code:
1
<font color=prefabkleurtje>je text hier</font>

Leuk enzovoorts, maar niet wat ik wil.
Ik heb dus een colorpicker bij elkaar gejat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
document.writeln('<table class="layerTable" cellpadding="0" cellspacing="0">');

for (blue = 0; blue < 128; blue += 51) 
{
    document.write('<tr>');
    for (red = 0; red < 256; red += 51) 
    {
         for (green = 0; green < 256; green += 51) 
        {
             document.write('<td class="colorCell" style="background-color: ' 
+ rgbC(red, green, blue) + 
';" onMouseOver="showCurrentColor(this.style.backgroundColor);" onclick="setColor(this.style.backgroundColor);">&nbsp</td>');
      }
    }
    document.write('</tr>');
}

for (blue = 128; blue < 256; blue += 51) 
{
    document.write('<tr>');
    for (red = 0; red < 256; red += 51) 
    {
        for (green = 0; green < 256; green += 51) 
        {
          document.write('<td class="colorCell" style="background-color: ' 
+ rgbC(red, green, blue) + 
';" onMouseOver="showCurrentColor(this.style.backgroundColor);" onclick="setColor(this.style.backgroundColor);">&nbsp</td>');
      }
     }
     document.write('</tr>');
}

document.write('<tr>');

for (c = 0; c < 256; c += (256/36)) 
{
    document.write('<td class="colorCell" style="background-color: ' + rgbC(c, c, c) + ';"
 onMouseOver="showCurrentColor(this.style.backgroundColor);" onclick="setColor(this.style.backgroundColor);">&nbsp</td>');
}

document.write('</tr>');
document.writeln('</table>');
document.writeln('<div id="currentPickerColor">&nbsp;</DIV></DIV>');

Die verwijst naar de functie setcolor(color).

Nu is de vraag hoe ik setcolor met cmdExec(cmd,opt) moet combineren.

Mislukkingen
Ik heb het al geprobeerd op de manieren die mij logisch leken.
code:
1
2
3
4
function SetColor 
{
    cmdExec("Forecolor",color);
}

enzovoorts. Weet iemand hoe dit werkt?

Verwijderd

Ik weet niet hoeveel waarde jij hecht aan Netscape compatibility (heb ik niet niet getest daarmee), maar IE heeft de mogelijkheid om een 'echte' Windows colorpicker aan te roepen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<SCRIPT language="JavaScript">
function callColorDlg()
{
  if (sInitColor == null) { var sColor = dlgHelper.ChooseColorDlg(); /*display color dialog box*/ }
    else { var sColor = dlgHelper.ChooseColorDlg(sInitColor); }
  sColor = sColor.toString(16);  //change decimal to hex
  if (sColor.length < 6) { var sTempString = "000000".substring(0,6-sColor.length); sColor = sTempString.concat(sColor); }
  alert(sColor);
}
</SCRIPT>

<OBJECT ID="dlgHelper" CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" WIDTH="0px" HEIGHT="0px"></OBJECT>

Verwijderd

Topicstarter
Hey cool.
Maar dan blijft het probleem hoe ik die font tag ga maken met cmdExec().
Het probleem is niet dat de colorpicker niet werkt, maar dat ik niet weet hoe ik het ding moet combineren met de cmdExec functie.

Verwijderd

cmd = 'ForeColor' of 'BackColor'
opt = de return value van die callColorDlg() functie

Verwijderd

Topicstarter
Op zaterdag 16 maart 2002 16:32 schreef daxx909 het volgende:
cmd = 'ForeColor' of 'BackColor'
opt = de return value van die callColorDlg() functie
Okay dan, cool. Maar zoals ik al zei, ik ben een noob. Hoe krijg ik die return value te zien?
Met zoiets wazigs als return.value.callColorDlg ofzo?
En ik wilde eigenlijk toch maar liever werken met die colorpicker, want dat is handiger voor netscape sukkels.

Verwijderd

Nou, waar ik zeg:
code:
1
alert(sColor);

Dat vervang je door:
code:
1
cmdExec('ForeColor',sColor);

Verwijderd

Topicstarter
Ehmz... Okay, ik snap het niet helemaal meer.

Ik doe nu dit:
code:
1
2
3
4
<script language="javascript">
callColorDlg();
</script>
<OBJECT ID="dlgHelper" CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" WIDTH="0px" HEIGHT="0px"></OBJECT>

en dan krijg ik de volgende error:
code:
1
sInitColor is niet gedefinieerd

bij het laden van de pagina.
Ik doe dus iets fout...

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Een online voorbeeld spreekt vaak boekdelen.
Trouwens, op de pagina in mijn sig (Scrollbar CSS) staan 2 verschillende zelfgeprogde colorpickers - misschien een alternatief?

Intentionally left blank


Verwijderd

Topicstarter
[off-mijn-eigen-topic]Die colorpickers van jou die zien er ook cool uit btw![/off-mijn-eigen-topic]

Na de nodige trucs en troep en meuk en onzin heb ik nu dit in elkaar geflansd.

En hij doet niet de span en de text kleur veranderen met de pickers (wel met het text-ding wat er prefab in zat, maar ik er nog uit ga halen).
Iemand enig idee?

Trouwens ook vaag: de ene keer definieerd ie id.content wel, en de andere keer niet...

Verwijderd

Hey, die colorpicker komt me bekend voor ;)

Verwijderd

Topicstarter
Op zaterdag 16 maart 2002 22:28 schreef Cheatah het volgende:
Hey, die colorpicker komt me bekend voor ;)
:D
pellePaint Rules! Echt wel super goed werk geleverd daar! Go Cheetah! (Strakke sig trouwens)

Verwijderd

Topicstarter
Ik schop deze topic nog even omhoog, want ik ben er nog steeds niet uit!

Tevens een vraag, is er niet een manual van JS in de trant van de manual des PHPs? Dat zou ik erg cool vinden, zo'n naslagwerk. Het liefst een downloadable one, want ik ga er geen geld aan uit geven.

Verwijderd

Je moet gewoon die sInitColor definieren in je <SCRIPT> tags. Dat is de beginkleur. Die kun je gewoon op '#000000' zetten.

Dus:
var sInitColor='#000000';

Maareh... ik heb dit van MSDN: http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/editing/modifyingdoc.asp

Dit is een compleet uitgewerkte DHTML richeditor.

Verwijderd

Topicstarter
Thanks guys! Ik denk dat ik er wel uit kom.
Pagina: 1