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? :)
Synes godt om
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
Jeg har sat et par semikoloner efterhånden. Tak for points ;o)
Synes godt om
Ny brugerNybegynder
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.