Ik ben bezig zoals velen voor mij met een DHTML CMS systeem. Het gebruik van document.execCommand i.c.m. CreateLink om een link te maken vind ik iets te simplistisch, en daarom ben ik bezig met een eigen functie om van geselecteerde tekst een link te maken.
Ik ben er na een aantal foutmeldingen achter gekomen dat als de gebruiker alleen een control selecteerd (ik heb het b.t.w. dus over een contenteditable iFrame), dat daar bijvoorbeeld geen htmlText van beschikbaar van is, en een parentElement kan je ook niet opvragen. Nu heb ik twee methodes gevonden om te testen of er een control of een lap (html)tekst geselecteerd is:
en misschien iets beter:
Nu kom ik er niet achter met welke methode ik van deze geselcteerde control de eigenschappen kan krijgen zodat ik er een link omheen kan maken, met gewone tekst gaat dit allemaal eenvoudig:
Hierna roep ik dus 'hyperlink.aspx' aan en vervang ik de tekst met de link (pasteHTML e.d.
)
Mijn vraag is dus of iemand anders al tegen dit probleem is aangelopen en hoe hij / zij het opgelost heeft dat de gebruiker ook alleen op een plaatje kan klikken en er dan een link van kan maken. Ik hoop dat alles duidelijk is.
Ik ben er na een aantal foutmeldingen achter gekomen dat als de gebruiker alleen een control selecteerd (ik heb het b.t.w. dus over een contenteditable iFrame), dat daar bijvoorbeeld geen htmlText van beschikbaar van is, en een parentElement kan je ook niet opvragen. Nu heb ik twee methodes gevonden om te testen of er een control of een lap (html)tekst geselecteerd is:
code:
1
| if(selection.htmlText == undefined){ |
en misschien iets beter:
code:
1
| if(idContent.document.selection.type.toLowerCase() == "control"){ |
Nu kom ik er niet achter met welke methode ik van deze geselcteerde control de eigenschappen kan krijgen zodat ik er een link omheen kan maken, met gewone tekst gaat dit allemaal eenvoudig:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| if(selection.htmlText == undefined){
//user selected an object without additional html surrounding it. e.g. an image or hr tag
//for some reason i can't figure a way around it...
alert("not possible")
}else{
var linkhref = selection.parentElement().href; //if this one is 'undefined', there is no link yet
var linktarget = selection.parentElement().target; //if this one is 'undefined', there is no target yet
var linktext = selection.text;
strPage = "hyperlink.aspx?text=" + linktext
if(linktarget != undefined){
//alert("We are editing an existing link, let's grab the target")
strPage = strPage + "&target=" + linktarget
}
if(linkhref != undefined){
//alert("We are editing an existing link, let's grab the href")
strPage = strPage + "&url=" + linkhref
//if(linktext == ""){//there is no text selected but the cursor is at a link, get the linktext
//}
}
} |
Hierna roep ik dus 'hyperlink.aspx' aan en vervang ik de tekst met de link (pasteHTML e.d.
Mijn vraag is dus of iemand anders al tegen dit probleem is aangelopen en hoe hij / zij het opgelost heeft dat de gebruiker ook alleen op een plaatje kan klikken en er dan een link van kan maken. Ik hoop dat alles duidelijk is.