webForumDet fria alternativet

Event listener på någe vis?

JavaScript

12 svar · 422 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

God morgon!
Finns det något sätt för att få upp en alert genom att skriva <script>alert("hej")</script> i detta textfält?
Vanlig text och formaterat text funkar ju bra, men inga script. Varför?

<input type="text" name="textfield" onkeyup="document.all.lager.innerHTML=this.value">
<div id="lager"></div>
Medlem sedan aug. 20039 340 inlägg
#2

Du vill mao köra det kommando som användaren skriver in?

 
<form>
<input type="text" name="textfield" id="foo" value="alert('hej');" />
<input type="button" onclick="eval(this.form.elements['textfield'].value);" >
<form>

Att lägga till med hjälp av innerHTML går däremot inte...

Medlem sedan nov. 20017 144 inlägg
#3

Ok, vad trist då. Men tack ändå.

Medlem sedan nov. 20017 144 inlägg
#4

efter lite tester så kommer man ju trots allt ganska nära med:
Borde det inte funka på något vis?

<input type="text" name="textfield" onkeyup="<input type="text" name="textfield" onkeyup="document.all.lager.innerHTML=eval(this.value);document.all.lager.innerHTML=this.value;">
<div id="lager"></div>
Medlem sedan feb. 2003774 inlägg
#5

Jesper, det där kommer inte fungera så bra... Tänk på det här med cituationstecken. Antingen kan du escape dem med \, eller så kan du använda dig av enkla när du använt dubbla.

Medlem sedan nov. 20017 144 inlägg
#6

Vad menar du?

Medlem sedan feb. 2003774 inlägg
#7

Jag menar att
onkeyup="<input type="text"....

kommer att ge dig javascript error, i stället skriver du
onkeyup="<input type='text'....

Medlem sedan nov. 20017 144 inlägg
#8

Oj, jag menade visst inte så. Jag menade så här:

<input type="text" name="textfield" onkeyup="document.all.lager.innerHTML=eval(this.value);document.all.lager.innerHTML=this.value;">
<div id="lager"></div>
Medlem sedan feb. 2003774 inlägg
#9

Ok... dock förstår jag inte vad du vill göra. Ovanstående ger dig javascript error, för så fort du matar in ett tecken kommer den att köra eval på den. Testa och se.
Sen är document.all inte att rekommendera, anvädn document.getElementById() i stället.

Medlem sedan nov. 20017 144 inlägg
#10

Men kan man med regexp eller något plocka ut saker ur texen som den skall göra eval på då.
Låt säga att jag skriver en massa text och mitt itexten skall jag öppna en popup och skriver &&window.open("något")&& regexpen plockar ut det som ligger i mellan && och && och kör detta.
Lite virrit kanske men, men.

Medlem sedan feb. 2003774 inlägg
#11

Testade du nitro2k01:s exempel?

Medlem sedan nov. 20017 144 inlägg
#12

Ja, men där uppstår ju samma problem om jag kombinerar med text som det kommer att göras.

Medlem sedan nov. 20017 144 inlägg
#13

Jag gjorde så här, alltså när man var som helst i textfältet skriver §§alert("HEJ")§§ så körs alerten.
Men det kanske finns mer ultimata sätt för detta.
Tips mottages gärna.

<head>
<script type="text/javascript">

var ret=false;
function evlistener(str){

document.getElementById('lager').innerHTML=document.myForm.textfield.value;

var regExp = /§§/g
var arrHits = str.match(regExp)+1;

	if(arrHits.length >5 && ret==false){
		var str1=str.split(/([§§*])/);
	
		str=eval(str1[1]);
		ret=true;
   
   }
}
</script>
</head>
<body>

<form name="myForm">
<textarea name="textfield" onkeyup="evlistener(document.getElementById('lager').innerHTML)"></textarea>
</form>

<div id="lager"></div> 

</body>
275 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
138 ms — ändringar (db)