2016-11-21 60 views
0
<script> 
test('test.php?a=%3D');//alert(1) 
function test(a){ 
    alert(a); 
    if(a == 'test.php?a=%3D'){ 
     alert(1); 
    }else{ 
     alert(2); 
    } 
} 
</script> 
<a href="javascript:test('test.php?a=%3D')">aaa</a > <!-- alert(2) --> 

为什么两种不同的方式得到不同的结果? 任何人都可以帮助我吗? 非常感谢你!JavaScript变量的值自动未转义

+0

HREF不能直接的JavaScript命令,你需要添加“的javascript:” –

+0

之前可能要元素 –

回答

1

让我们来分析这两个场景:

  1. test('test.php?a=%3D');//alert(1) test.php?a=%3D被认为是作为一个变量。

  2. <a href="javascript:test('test.php?a=%3D')">aaa</a > <!-- alert(2) --> test.php?a=%3D被视为与查询字符串的URL和%3D转换为=。所以完整的结果是test.php?a==

这就是这两个值不同的原因。再次考虑下面显示的代码 - test.php?a=%3D被视为变量,因此结果为alert(1)

<input type="button" value="Click" onclick="javascript:test('test.php? 
a=%3D')"/> 
+0

非常感谢,它的工作,你的意思是说,如果所有的代码如下href将被转义?我发现 did not work but works, can you tell me the difference? – jim

+0

Consider these three scenarios: 1.some text1 //javascript variable, result alert(1); 2.some text2 // javascript变量,result alert(1); 3. some text3 // URL,result alert(2); –

0

你在你的代码有错误

线12

<a href="javascript" click="test('test.php?a=%3D'">aaa</a > <!-- alert(2) --> 

改变这一行,并尝试

+0

我改为onclick,结果变得一样。谢谢,但我不知道为什么。 – jim

+0

'href =“javascript”'应该做什么? – 2016-11-21 04:34:11

+0

我想调用一个javascript函数,你的意思是说这不是一个很好的方法吗? – jim