Avatar billede ss Nybegynder
10. maj 2006 - 17:18 Der er 15 kommentarer og
1 løsning

Tunge funktioner resulterer i cursor-skift (WYSIWYG-editor)

Hej,
Som overskriften siger er jeg ved at lave en WYSIWYG-editor.
Jeg vil gerne vise det aktive format, altså at knappen [B] er "trykket ned (har andet baggrundsbillede)" hvis cursoren er placeret i et ord der er bold.
Altså ligesom word gør.

Håber i forstår?

Til det kører jeg en funktion onclick (hvis man klikker på ordet) og onkeyup (hvis man bevæger sig hen til ordet med piletasterne).

I denne funktion sætter jeg så baggrundsbilledet hvis det format er aktivt.

Problemet opstår så hver gang man klikker på iframet eller trykker på en tast inde i iframet.
Cursoren skifter nemlig fra text til default, somom den skal loade en STOR funktion og der altså sker et slags sideload. (der kommer nemlig også et timeglas i et splitsekund).

Det vil jeg gerne undgå da det forvirrer ekstremt meget at cursoren "blinker" hver gang man skriver et bogstav.

Funktionen er ikke spor tung og problemet opstår når jeg prøver at definere følgende:
- innerhtml
- baggrundsbillede
- fontstørrelse
- Sikkert mange flere

Nogle der kan definere en permanent cursor på en måde?

På forhånd tak, og skriv hvis jeg skal forklare yderligere
Avatar billede olebole Juniormester
10. maj 2006 - 17:56 #1
<ole>

Du kan ikke undgå timeglas-cursor'en. Den kommer frem, når browseren loade en side og det kan du ikke ændre på ... og det er der heller ikke andre, der kan  :)

/mvh
</bole>
Avatar billede olebole Juniormester
10. maj 2006 - 17:57 #2
- men det lyder da også som skidt kode, hvis du foretager et sideload, hvergang der tastes et tegn!  :o|
Avatar billede ss Nybegynder
10. maj 2006 - 18:25 #3
Det gør jeg heller ikke.
Jeg kører en funktion hver gang man trykker på en tast.
Den funktion kunne fx sætte et nyt baggrundsbillede (ikke andet).

Men det der sker er at cursoren skifter først til timeglas og få milisekunder efter skifter den til default.

Det ser som sagt vildt forvirrende ud.
Avatar billede olebole Juniormester
10. maj 2006 - 18:32 #4
Ja, det er fordi, IE insisterer på at checke på serveren for en ny version af billedet, hvergang du indsætter et baggrundsbillede - eller blot flytter et element, der indholder et baggrundsbillede. Det hjælper ikke at preloade billederne  :o|
Avatar billede ss Nybegynder
10. maj 2006 - 18:36 #5
Så der er ikke noget at gøre ved det? :O

Og hvis jeg sætter innnerHTML på en div med baggrundsbillede, så virker det heller ikke.

Hvis det er umuligt at forhindre, hvordan gør andre WYSIWYG-editorer?

På forhånd tak
Avatar billede olebole Juniormester
10. maj 2006 - 18:40 #6
"Og hvis jeg sætter innnerHTML på en div med baggrundsbillede, så virker det heller ikke."
- hvad virker ikke?

"Hvis det er umuligt at forhindre, hvordan gør andre WYSIWYG-editorer?"
- gør hvad?

Vi kender intet til din kode - og så er det jo ikke let at angive alternative løsninger  =)
Avatar billede ss Nybegynder
10. maj 2006 - 18:47 #7
Undskyld den manglende forklaring :)
"Og hvis jeg sætter innnerHTML på en div med baggrundsbillede, så virker det heller ikke."
Der mener jeg at cursoren også blinker hvis jeg sætter innerHTML på en div (med baggrundsbillede).
Er det fordi at IE forsøger at læse en ny version af baggrundsbilledet selvom man på ingen måde tilgår det?

"Hvis det er umuligt at forhindre, hvordan gør andre WYSIWYG-editorer?"
Der mener jeg:
Hvis det er umuligt at forhindre at cursoren blinker, hvad gør andre WYSIWYG-editore de bruger jo også aktivt format (i hvert fald de fleste af dem)

Men altså, det jeg overordnet vil opnå er:
At vise hvilket format (altså fx bold og italic osv.) der bliver brugt i det ord/sætning hvor cursoren er markeret.

Det gør jeg nu via queryCommandValue() og så de tidligere omtalte events.

Endnu engang på forhånd tak.
Avatar billede olebole Juniormester
10. maj 2006 - 18:59 #8
1) Så snart du 'roder' med et element med bg-pic, vil IE checke på serveren. Det ligger i IE's standard-instillinger.

2) De bruger formodentlig ikke bg-pics  ;o)
Avatar billede ss Nybegynder
10. maj 2006 - 19:08 #9
Hvad så med src, virker det heller ikke?
Avatar billede ss Nybegynder
10. maj 2006 - 19:08 #10
Undskyld:
Blinker det også ved src, vil du tro?
Avatar billede olebole Juniormester
10. maj 2006 - 19:37 #11
Hvis du med 'ved src' mener et almindeligt billed-element, så nej. Her checker IE ikke serveren - med mindre der eksplicit gøres noget for, at det skal ske  :)
Avatar billede ss Nybegynder
10. maj 2006 - 19:43 #12
jeg mener src via java script:
document.getElementById('blabla').src
Avatar billede ss Nybegynder
10. maj 2006 - 22:11 #13
Jeg fik løst mit problem!
Det sted hvor jeg skulle bruge backgroundImage brugte jeg bare backgroundColor istedet, og der hvor jeg havde brug for innerHTML satte jeg 2 divs inde i hinanden.
Den yderste har et baggrundsbillede og den inderste ændrer jeg innerHTML på, på den måde holdes baggrundsbilledet ude af funktionen.

Mange tak for hjælpen.
Uden hjælpen havde jeg aldrig forstået hvorfor den gjorde som den gjorde, og derfor aldrig løst problemet.

Smid et svar og du modtager pointene.
Avatar billede ss Nybegynder
15. maj 2006 - 19:17 #14
Lader ikke til at du vender tilbage ole, jeg lukker spørgsmålet om et par timer..
Avatar billede olebole Juniormester
15. maj 2006 - 19:35 #15
Ekspertens mail-system fungerer desværre ekstremt dårligt, så det er ikke alle tråde, man får mails om ... denne kom jeg tilfældigt forbi igen  :)
Avatar billede olebole Juniormester
15. maj 2006 - 22:14 #16
- men denne mail fik jeg. Tak for points  ;o)
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