login  Naam:   Wachtwoord: 
Registreer je!
 Forum

element gemaakt door execcommand bereiken

Offline Grayen - 07/02/2007 20:45 (laatste wijziging 07/02/2007 20:57)
Avatar van GrayenPHP ver gevorderde Weet iemand hoe je het element wat gemaakt wordt door de commando execcommand kunt bereiken? Ik zou namelijk niet weten hoe. Ik heb dit nodig omdat ik alleen dit element wil aanpassen, dus aub niet met antwoorden als
  1. document.getElementsByTagName('strong')[0];

komen , tenzij je daarbij 100% zeker weet dat je dan het element hebt bereikt dat zojuist met de execcommand is gemaakt .

Dus bijvoorbeeld:

stel iframeDocument is het document van de iframe en ik voer dan vervolgens de volgende code uit op het geselecteerde stuk tekst:

  1. iframeDocument.execCommand('bold', false, null);


Dan krijg je als je de tekst "hallo dit is een tekst" en je "is" zou hebben geselecteerd en daarop de bovenstaande zou hebben uitgevoerd krijg je "hallo dit <strong>is</strong> een tekst" hoe kan ik dan het element van <strong> bereiken?

Of weet iemand hoe je zelf een execcommand kunt creeren? want tinyMCE heeft dit wel op een of andere manier gedaan .

12 antwoorden

Gesponsorde links
Offline Stijn - 07/02/2007 21:15
Avatar van Stijn PHP expert doe eens een alert van je iframe.innerHTML; kijk eens of daar <strong> tussen staat....
Offline Grayen - 07/02/2007 21:18
Avatar van Grayen PHP ver gevorderde ? wat heb ik daar nou aan? heeft opzich weinig met mijn vraag te maken . De ene keer staat het erin ja andere keer niet, hangt er natuurlijk af of iemand een stuk van de tekst bold maakt en of er in mijn textarea dit al stond (ik vervang textarea maar behoudt inhoudt die wordt namelijk terug geplaatst in de editor (iframe))
Offline Stijn - 07/02/2007 21:30 (laatste wijziging 07/02/2007 21:31)
Avatar van Stijn PHP expert Je bent hier véél mee. Doe volgende code dan, zet een knopje bij je iframe of in je HTML document en zet daar volgende bij:

  1. alert( document.getElementById("iframeID").contentWindow.document.innerHTML );


Doe dit voor je tekst bold maakt en dan eens erna. Als er HTML tags bij staan dan kan je volgende besluiten (als je zelf moet redeneren hé...)

  1. document.getElementById("iframe").contentWindow.document.getElementByTagName("strong")[0];


stijn
Offline Grayen - 07/02/2007 21:44
Avatar van Grayen PHP ver gevorderde zat ik net ook aan te denken, alleen zit ik nu met het probleem hoe weet ik welk element dit is. Ik ben net begonnen met proberen een functie te schrijven die alle oude childNodes met de nieuwe childNodes vergelijkt van het document om zo te kijken welk element erbij is gekomen, weet jij misschien een beter methode?
Offline Stijn - 07/02/2007 21:47
Avatar van Stijn PHP expert mmm , zou ik niet weten. tinyMC is ook geen kleine javascript zoals je weet. Volgens mij doen die dat anders. Wat is het doel eigenlijk?
Offline Grayen - 07/02/2007 21:51
Avatar van Grayen PHP ver gevorderde doel is proberen wysiwyg editor te creeren waarbij ik zelf kan bepalen wat de html is die in de editor wordt geplaatst. Best moeilijk dus , al helemaal als je nooit javascript script . Maar ik ben al eind op weg, alles werkt behalve het vervangen van de slechte code naar code van eigen keus, ik ga nu eerst proberen of ik niet zelf een soortgelijke functie als execcommand('bold') kan maken.
Offline Stijn - 07/02/2007 22:00
Avatar van Stijn PHP expert dat lukt je niet. Ik zou het volgende doen:

  1. var iFrame = document.getElementById("iframeID").contentWindow.document.
  2. var prevHTML = iFrame.innerHTML;
  3.  
  4. var oldHTMLstart = /\<strong\>/;
  5. var newHTMLstart = '<b>';
  6.  
  7. var oldHTMLclose = /\<\/strong\>/;
  8. var newHTMLclose = '</b>';
  9.  
  10. prevHTML.replace( oldHTMLstart , newHTMLstart );
  11. prevHTML.replace( oldHTMLclose , newHTMLclose );
  12.  
  13. iFrame.innerHTML = prevHTML;


Ik had zoiets in gedachten.
Offline Grayen - 07/02/2007 22:04
Avatar van Grayen PHP ver gevorderde Had ik eerst ook in gedachten alleen wat nou als je meedere elementen hebt genaamd "strong" dan heb je een probleem, enige wat je dan zou kunnen doen is een bepaalde tag die je met execcommand kan aanmken nemen en die niet laten gebruiken, en die dan als identificeerder van de nieuwe html laten gebruiken. Alleen welke tag is overbodig die door execcommand te creeren is? (je zit ook nog eens met het probleem dat html die ze gebruiken per browser anders is)
Offline Stijn - 07/02/2007 22:08
Avatar van Stijn PHP expert één woord: kutbrowers 

die replace vervangt alle <strong> tags door <b> tags. Meer kan ik er niet over zeggen. Of je zo'n command kan maken, ik zou het eens proberen. Wel DOM gebruiken en .innerHTML, meer tips kan ik niet geven.
Offline Grayen - 07/02/2007 22:25
Avatar van Grayen PHP ver gevorderde ja hé daarom script ik liever php, maar ja voor deze dingen kan je helaas niks anders als javascript gebruiken .

Ja ik werk dit hele script al met DOM (zoals bijvoorbeeld om alle elementen aan te maken nodig om een editor van de textarea te maken).

Ben nu proberen die functie te maken.
Offline xSc - 08/02/2007 07:19
Avatar van xSc Onbekend Normaal gesproken geef je een element een id mee, waarna je met JavaScript gericht gebruik kan maken van het betreffende element.
Offline Grayen - 08/02/2007 13:06
Avatar van Grayen PHP ver gevorderde probleem is dat ik die niet mee kan even met execCommand (tenminste zover ik weet).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.227s