webForumDet fria alternativet

Markera text i HTML

JavaScriptur Javascript

4 svar · 355 visningar · startad av Matte

Medlem sedan aug. 20002 975 inlägg
Frågan#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 :)

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