webForumDet fria alternativet

Markera text i HTML

4 svar · 355 visningar · startad av Matte

MatteMedlem sedan aug. 20002 975 inlägg
#1

Jag är ute efter ett sätt att med javascript (länk eller knapp) markera innehållet i en div.
Motsvarande som om jag med musen hade markerat det på skärmen.

Går det att göra?

Lite överkurs.
Om det går, och jag sedan vill kopiera det markerade till clipboard, går det också att göra ?

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Detta markerar upp och kopierar till urklipp.
Men jag vet inte hur man ersätter textarean mot en div. Du får labba lite.

<head>
<script type="text/javascript">
 <!--
 function highlight(){
 document.foo.bar.focus()
 document.foo.bar.select()
 foo.bar.document.execCommand('copy', false, null);
 }
 //-->
 </script>

<body>

<form name="foo">
<textarea name="bar">Detta &auml;r en text...</textarea>
</form>

<a href="#" onclick="highlight()">Markera</a>

</body>
MatteMedlem sedan aug. 20002 975 inlägg
#3

Det var just hur man kunde markera en div jag inte kunde fixa. Har dock inte hittat någon lösning på det.
Kommer nu istället att lägga en textarea över min div och markera den istället.

Tack ändå för hjälpen.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#4

Om du vill kopiera en text så kan du använda:

window.clipboardData.setData("text", document.getElementById("foo").innerHTML);

IE-specifikt...

MatteMedlem sedan aug. 20002 975 inlägg
#5

Har nu lyckats få tag på en lösning som fungerar i Mozilla och IE. Om någon är intresserad så ser den ut så här:

function markText(divId) {
	var myElement = document.getElementById(divId)
	if (window.getSelection) {
		// Mozilla
		var myRange = document.createRange()
		myRange.selectNodeContents(myElement)
		var mySelection = window.getSelection()
		mySelection.removeAllRanges()
		mySelection.addRange(myRange)
	}
	else if (document.selection) {
		// IE
		var myRange = document.body.createTextRange()
		myRange.moveToElementText(myElement)
		myRange.select()
	}
}
</script>
</head>
<body>
<input type="button" onClick="markText('foo')" value="select foo">
<div id="foo">Content</div>

Själv förstår jag inte mycket av den, men den fungerar :)

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
130 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)