IE:通过 href 调用函数,参数乱码 (转)

示例代码

    < a href= "javascript:foo('CPU%E9%A3%8E%E6%89%87')">foo1< /a>< br />
    < a href= "javascript:foo('CPU%u98CE%u6247')">foo2< /a>< br />
    < a href= "javascript:foo(escape('CPU风扇'))">foo3< /a>< br />
    < a href= "javascript:foo(encodeURI('CPU风扇'))">foo4< /a>< br />
    < a href= "#"  οnclick= "foo('CPU%E9%A3%8E%E6%89%87')">foo5< /a>< br />
    < textarea rows= "8"  cols= "50"  id= "txt">< /textarea>

    < script type= "text/javascript">
     var txt = document.getElementById( 'txt');
     function foo(msg,src)
    {
        txt.value = txt.value + msg +  '\r\n';
    }
    < /script>

运行结果

从上到下,依次点击各链接,结果如下:

IE:通过 href 调用函数,参数乱码 - CPU风扇 - CPU 藏经阁

可以看到,点击foo1后,乱码了。

问题描述

通过 href 调用函数,参数若为中文 encodeURI 编码后的字符串,IE浏览器下乱码。

问题解析

1、上述调用,浏览器会先对参数自动解码;(参数必须是 encodeURI 编码后的字符串)

2、非IE浏览器使用相应的 decodeURI 解码;(仅测试了webkit核心)

3、IE浏览器(含IE9)使用 unescape 解码;(乱码原因)

解决办法

1、使用 onclick 代替 href 调用函数;(推荐,参见示例代码的foo5)

2、参数不编码,先做为 encodeURI 的参数,再一起传递给调用函数;(参见foo4)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值