[JS] [Safari] Element plaatsen om geselecteerde range

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 00:49
Voor een iPhone programma welke ik in mijn hoofd heb, heb ik het volgende nodig:

- Gebruiker selecteerd tekst, er wordt gekeken wat de geselecteerde tekst is, en er wordt een '<span>' oid om de geselecteerde tekst geplaatst. Dit heb ik momenteel wel werkend, maar nu is er één probleem.

Zodra dit mijn geselecteerde tekst is:
<p>Dit is mijn geselecteerde tekst</p><p>Nog een selectie</p>
Is er niets aan de hand, maar zijn er maar 'halve elementen' geselecteerd dus bijvoorbeeld:
<p>Dit is mijn geselecteerde tekst</p>En nog meer
Dan krijg ik de volgende error:
Error: BAD_BOUNDARYPOINTS_ERR: DOM Range Exception 1
Nu snap ik dat het is omdat je geen tags mag hebben in je (x)html die 'door elkaar' staan aka:
<p>Dit is een <span> in de </p><p> waar we door gaan </span</p>
Maar is er een manier om dit toch te bewerkstelligen?

De code die ik er voor gebruik is vrij simpel.

code:
1
2
3
4
5
6
7
8
9
10
11
function getSel() {
            var txt = window.getSelection();
//          console.log(txt.getRangeAt(0).toString());
            var newNode = document.createElement('span');
            newNode.style.backgroundColor = 'red';
            txt.getRangeAt(0).surroundContents(newNode);
            console.log(txt.getRangeAt(0));
            if(txt.anchorOffset != txt.focusOffset) {
                return txt.getRangeAt(0).toString();
            }
        }


Welke op de 'onmouseup' van de body momenteel wordt uitgevoerd.

Dat de 'html' niet helemaal valid blijft op deze manier maakt me niet zo veel uit en neem ik voor lief. Nu las ik op het internet toen ik op de error zocht, dat je de body 'editable' kan maken (zelfde systeem als voor JS wysiwyg editors) maar ik wil niet dat er in getypt kan worden, dus dat is niet echt een oplossing.

editz:

'contentEditabe' wordt blijkbaar niet ondersteund in de iPhone browser. En de 'selectie' events ook niet.. aangezien die anders werken ofzo. Ben bang dat dit niet gaat lukken dus op de iPhone, tenzij iemand met een geniale oplossing komt :)

De reden dat ik trouwens JS gebruik ipv Objective-C oid, is dat de UIWebview blijkbaar de enige view is die 'rich-styling' ondersteund.

[ Voor 21% gewijzigd door ZpAz op 02-03-2010 00:12 ]

Tweakers Time Machine Browser Extension | Chrome : Firefox