2016-11-21 96 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