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