Avatar billede Slettet bruger
07. september 2007 - 00:27 Der er 5 kommentarer og
1 løsning

Hmm ser man det

hey jeg sidder lidt for tiden og roder med noget editor noget og kom til at tænke på om det ikke var muligt at lane noget i denne stil

var makeret = document.selection.createRange().text

document.selection.createRange().text = "<span style='background-color:#ff0000;'>"+makeret+"span";

det kan man jo, men kan man ikke i stedet for at gøre det sådan, så gøre det ved ens innerHTML uden at bruge execCommand ??
Avatar billede olebole Juniormester
07. september 2007 - 17:32 #1
<ole>

document.selection.createRange().pasteHTML("<span style='background-color:#ff0000;'>"+makeret+"span");

/mvh
</bole>
Avatar billede Slettet bruger
07. september 2007 - 21:35 #2
mange tak men ny sys jeg jo selv jeg var så smart, men står med et genialt problem

som du nok er klar over er fucker den koden op hvis jeg makere noget tekst som i forvejen har en span om sig

f.eks

<span bla..blå.>hej med dig jeg hedder michael</span><span bla..rød.>og fuck jeg sucks ;P</span> sådan virker det jo men men

<span bla..blå.>hej med dig jeg <span bla..rød.>hedder michaelog fuck jeg sucks ;P</span></span>

kan man få løst det???
Avatar billede olebole Juniormester
08. september 2007 - 16:46 #3
Ja, men det er ikke så ligetil, når man skal udenom IE's mange særheder:

<script type="text/JavaScript">
String.prototype.trim=function(){return this.replace(/(^\s+)|\s+$/g,"")};
function foo() {
    var oRng = document.selection.createRange();
    var sText = oRng.text;
    var oPar = oRng.parentElement();
    var sElm = "<span style='background-color:#ff0000;'>"+sText.trim()+"</span>";
    if (sText==oPar.innerText) {
        oElm = document.createElement(sElm);
        oPar.outerHTML = sElm;
        oPar = null;
    } else {
        var oRng2 = oRng.duplicate();
        oRng2.moveEnd("character", -1);
        oPar = oRng2.parentElement();
        if (sText.trim()==oPar.innerText) {
            oPar.outerHTML = sElm
            oRng = oRng2;
        } else {
            if (sText!=sText.trim()) {
                oRng.pasteHTML(sElm+" ");
                oRng.moveEnd("character", -1);
            }
            else oRng.pasteHTML(sElm);
        }
    }
    oRng.collapse(false);
    oRng.select();
}
</script>

<div id="edit" style="width:600px;height:300px;border:1px solid red" contenteditable>
    Bla blabla bla blabla. <span style="background-color:#0000ff;">Blabla</span> bla blabla bla.
</div>
<button onclick="foo()">Test</button>

Nogen vil nok undre sig over, jeg bruger outerHTML og innerText. Man kunne også have valgt at bruge DOM, men en IE-editor er i forvejen så langt, man kan komme fra valid kode, som muligt ... så hva' pokker?  :)
Avatar billede Slettet bruger
09. september 2007 - 01:26 #4
okay cool tak :) nu er det ikke fordi jeg kommer til at bruge din kode ville bare godt vide hvordan man gjorde :P men hold da helt kæft du har styr på dit js
Avatar billede olebole Juniormester
09. september 2007 - 01:32 #5
Jeg har sat et par semikoloner efterhånden. 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