Avatar billede tonse Nybegynder
09. juli 2007 - 13:38 Der er 2 kommentarer og
1 løsning

focus i WYSIWYG editor

Hej Ekperter!

Jeg er igang med at lave en editor til mit eget CMS system og jeg er støt på et meget irriterende problem når jeg kører min funktion.
jeg har lavet denne funktion til at indsætte egne HTML koder i både IE og FF.
function insert_HTML(tekst){
    document.getElementById("iView").contentWindow.focus();
    var random_string = "insert_html_" + Math.round(Math.random()*100000000);
    frames.iView.document.execCommand("insertimage",false, random_string);
    var pat = new RegExp("<[^<]*" + random_string + "[^>]*>");
    var links = '<a href=" + tekst + "> + test + </a>&nbsp;';
    frames.iView.document.body.innerHTML = frames.iView.document.body.innerHTML.replace(pat, links);
    document.getElementById("iView").contentWindow.focus();

}

Funktionen virker fint. Men dog fokuserer den forkert når jeg indsætter html koden. Den skal helst fokuserer efter den kode jeg har sat ind, men den fokuserer i stedet i starten af editoren.

Det skal både virke i Firefox og internet explorer og der er noget med at createRange og alt det der ikke virker i Firefox.

Nogen der har nogle forslag??
Avatar billede tonse Nybegynder
12. juli 2007 - 11:50 #1
Okay jeg har selv fundet en løsning.. så svarer selv.
Avatar billede roenving Novice
12. juli 2007 - 16:46 #2
Hvordan klarede du den ?-)
Avatar billede tonse Nybegynder
16. juli 2007 - 18:29 #3
Undskyld så ikke lige at du havde skrevet... Lavede simpelthen bare en ny funktion som fungerede langt bedre. Jeg brugte insertHTML og execCommand(insertHTML) i stedet for den forige funktion, derudover opdaterede jeg mine selections hver gang jeg indsatte noget kode.

Her er et eksempel:

function formatTekst(begynd,slut) {
    try {
    var selText = iView.document.selection.createRange();
    iView.document.selection.createRange().pasteHTML(begynd + selText.text+ slut);

    }
    catch (e) {
    var editor = document.getElementById("iView").contentWindow;
    var selection = editor.getSelection();
    var selText = selection.getRangeAt(selection.rangeCount - 1).cloneRange();
    document.getElementById("iView").contentWindow.focus();
    document.getElementById('iView').contentDocument.execCommand('insertHTML', false, begynd + selText + slut);
    }
}
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