webForumDet fria alternativet

HTML-editor med stöd för alla webbläsare

JavaScript

3 svar · 253 visningar · startad av skatan

Medlem sedan sep. 200126 inlägg
Frågan#1

Hittade denna koden här på Webforum.nu men skulle vilja ha så den funkar i alla webbläsare inte bara IE. Finns det någon vänlig själ som kan hjälpa mig med detta??

<script language="JavaScript" type="text/javascript">
function addToSelection(before,after){
if(document.selection.createRange().text){
document.selection.createRange().text=before+document.selection.createRange().text+after;
}
}
</script>
<form method="POST">
<input type="Button" value="<B>" onClick="addToSelection('<b>','</b>');">
<input type="Button" value="<I>" onClick="addToSelection('<i>','</i>');">
<input type="Button" value="<U>" onClick="addToSelection('<u>','</u>');">
<br>
<textarea name="Text1" Rows=8 Cols=70></textarea>
</form>

Medlem sedan dec. 20025 483 inlägg
#2

Det är svårt att få kod att fungera i "alla" webbläsare. Den jag bidrar med nedan bör i alla fall fungera i IE 5-6 samt NS6 och nyare.

function addToSelection(before,after){
    var ta = document.forms[0].elements["Text1"];

    if (document.selection && document.selection.createRange){
	var rng = document.selection.createRange();

	if (rng.parentElement() == ta)
	    rng.text = before + rng.text + after;
    }

    else if (typeof window.HTMLTextAreaElement != "undefined"){
	var sel = ta.value.substring(ta.selectionStart, ta.selectionEnd);

	if (sel != "")
	    ta.value = ta.value.substring(0, ta.selectionStart) 
		+ before + sel 
		+ after + ta.value.substring(ta.selectionEnd);
    }
}

:)

Medlem sedan sep. 200126 inlägg
#3

Tack för du tog dig tid Peter!

Skulle vara bra om lösningen funkar i Safari på Mac också.. de gör inte den där..

Sen att om man inte har någon text markerad att de ändå kommer ut taggar.

Medlem sedan dec. 20025 483 inlägg
#4

Safari har jag ej tillgång till, så jag kan inte testa mig fram. Du skulle kunna undersöka huruvida window.getSelection() ger någonting. Alternativt kan du testa att ta bort if-satsen if (window.HTMLTextAreaElement..., eller ersätta den med if (ta.selectionStart && ta.selectionEnd).

För att kunna lägga till taggar utan att någon text är markerad, kan du låta Gecko-if-satsen se ut så här:

    else if (typeof window.HTMLTextAreaElement != "undefined"){
	ta.value = ta.value.substring(0, ta.selectionStart) 
	    + before + ta.value.substring(ta.selectionStart, ta.selectionEnd) 
	    + after + ta.value.substring(ta.selectionEnd);
    }

En IE-lösning har jag ingen metod för för tillfället.

:)

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)