[JS] queryCommandValue geeft nederlandse tekst terug

Pagina: 1
Acties:

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Ik probeer met JS een rich text editer te maken en nu probeer ik bij bepaalde events de font naam, size en format stijl te achterhalen. Nu lukt dit voor de eerste 2 goed, maar als ik de derde opvraag geeft mijn browser nederlandse tekst terug. Niet echt bruikbaar dus. Ik verwacht namelijk dus dat het in een engels talige browser weer engels geeft, dus het checken van de waarde heeft niet zoveel zin. Voor een H1 element geeft ie bijvoorbeeld 'Kop 1' terug en voor een P element Normaal. Ik wil de waarde gebruiken om een selectbox, met daarin de mogelijke formats, op de juiste index te zetten. De values zijn <p> <h1> <h2> etc. dus het vergelijken van de gekregen tekst met deze waardes werkt niet. De tekst in de items is in het engels omdat de editer wat algemener gebruikt gaat worden (hoop ik althans :P).

Als ik er nog wat code bij moet geven moet je het maar zeggen, maar voor het probleem leek het me niet nodig. De vraag verder is dus of iemand hier een oplossing voor heeft? Ik dacht zelf al aan een array met de verschillende mogelijkheden, maar stel dat ik dan met een taal te maken krijg wat niet in de array staat, dan werkt het weer niet, dus dat leek me een beetje een vreemde oplossing. Ik heb gezocht, maar ik kon geen resultaten vinden over queryCommandValue, dus ik vraag me ook af of iemand er wel meer mee heeft gewerkt.

Edit:

Hmm.. ik vind op deze pagina deze code:
code:
1
2
3
4
  if (document.queryCommandValue("FormatBlock")) {
  // There is no way to know this because the return string is localized...
    document.all("BlockType").selectedIndex = (0);
  }

Lijkt een duidelijk antwoord. Mischien toch nog iemand met opmerkingen hier verder over?

[ Voor 19% gewijzigd door Michali op 17-05-2004 19:36 ]

Noushka's Magnificent Dream | Unity


Verwijderd

queryCommandValue overboord gooien en zelf omhoog wandelen door de DOM tree. Kom je vanzelf langs alle parents en kan je gewoon via de DOM methodes alle elementen benaderen. Zo houd je dus veel meer controle.

*command*() functies moet je zo veel mogelijk mijden.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Zou je me mischien een klein beetje op weg kunnen helpen? Ik zit zelf nu te klooien met document.activeElement, maar die geeft altijd als tagName BODY terug dus daar heb ik ook niet echt veel aan. Ook heb ik geprobeer iets met event (object) te doen, maar dat wil ook niet echt lukken.

Noushka's Magnificent Dream | Unity


Verwijderd

op een onmouseup, onkeyup event moet je het srcElement (of Target voor Gecko) opvragen en dan vervolgens omhoog loopen. Tijdens het omhoog lopen kijk je naar de nodeName. Als je een P nodeName tegenkomt, dan weet je dus dat de cursor in een P tag is... etc...

Als je aan de hand van dit geen voorbeeld kan maken, dan is dit misschien nog iets te hoog gegrepen...

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op 17 mei 2004 @ 21:47:
op een onmouseup, onkeyup event moet je het srcElement (of Target voor Gecko) opvragen en dan vervolgens omhoog loopen. Tijdens het omhoog lopen kijk je naar de nodeName. Als je een P nodeName tegenkomt, dan weet je dus dat de cursor in een P tag is... etc...

Als je aan de hand van dit geen voorbeeld kan maken, dan is dit misschien nog iets te hoog gegrepen...
Dat moet wel lukken. Ik zat al wat te proberen met het event object binnen een eventhandler die ik zo had toegevoegd:
code:
1
document.getElementById('iframe').contentWindow.document.body.onclick=click_handler;

toen gaf een alert boxje wel aan dat event een object was, maar een srcElement property was niet aanwezig. Ik ga vanmiddag nog wel even testen.

edit:

Dit wil niet lukken dus. Het event object is atlijd leeg als ik een event aan de body van een document in de iframe koppel. Het lukt me wel gewoon in het document zelf, maar niet met het iframe.

[ Voor 12% gewijzigd door Michali op 18-05-2004 14:59 ]

Noushka's Magnificent Dream | Unity


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Even een kick, want ik ben er nog niet uit.

Dit wil niet werken dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html>
<body>
<iframe id="edit" width="300" height="300"></iframe>
<script>

doc = document.getElementById('edit').contentWindow.document;

doc.designMode="On";

doc.open();
doc.write('<h1>Test</h1>');
doc.close();

function mouse_up_handle()
{
    alert(event.srcElement.tagName);
}

doc.body.onmouseup=mouse_up_handle;

</script>
</body>
</html>

Wat is er verkeerd aan? Ik zie het zo niet.

Noushka's Magnificent Dream | Unity


Verwijderd

Ik probeerde je deze richting in te schoppen:

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
<html>
<body>
<iframe id="edit" width="300" height="300"></iframe>
<script type="text/javascript">

frame = document.getElementById('edit').contentWindow;
doc = frame.document;
doc.designMode = "On";
doc.open();
doc.write('<h1>Test</h1>');
doc.close();

doc.onmouseup = function () {
  var e = frame.event;
  var o = e.srcElement;
  while (o) {
    alert("De cursor is in node: '" + o.nodeName + "'");
    o = o.parentNode;
  }
}

</script>
</body>
</html>

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Dan zat ik toch al aardig in de goede richting. Ik heb nu eenmaal nog weinig tot geen ervaring met het event object, dus ik wist ook niet dat je hem apart van het contentWindow kon opvragen en dat dat ook de bedoeling was. Nu gaat het wel lukken, Thanks. Als er nog iets is laat ik het wel weer horen.

Noushka's Magnificent Dream | Unity

Pagina: 1