Markera text i HTML

JavaScript

4 svar · 360 visningar · startad av Matte

Medlem sedan aug. 20002 975 inlägg
Trådstart#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 ?

Medlem 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>
Medlem 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.

Medlem 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...

Medlem 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 :)

258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)