情况是这样的,两个a标签,一个用href来出发click事件,另一个用onclick来出发,都调用相同的test方法,传入相同的字符串,字符串中包含转义过的特殊字符,但在方法内得到了两个不同的结果,一个被自动反转义了,求解其中原理是什么?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>a element</title> <script> function test(text){ alert(text); } </script> </head> <body> <ul> <li><a id="mmm" href="javascript:void(0)" onclick="test('1%2f2%22+K-08503-AA2A')">Test A</a></li> <li><a id="ttt" href="javascript:test('1%2f2%22+K-08503-AA2A')">Test B</a></li> </ul> </body> </html>
HTML如上,
Results:
单击“Test A”, 得到‘1%2f2%22+K-08503-AA2A’
单击“Test B”,得到‘1/2"+K-08503-AA2A’
href="javascript:test(‘1%2f2%22+K-08503-AA2A’)"
和
onclick="test(‘1%2f2%22+K-08503-AA2A’)"
的区别是什么?
一个是在href 也就是url中会被转义,一个在非url属性中不需要转义
了解了
所以<a>标签的href值总会被当作一个URL来处理,哪怕它不是一个真实的URL而是一个javascript小片段
谢谢