此代码在IE中不起作用

时间:2011-04-12 06:45:24

标签: javascript jquery internet-explorer cross-browser

嗨所以我有这个jQuery / JS脚本。这基本上采用编码的URL字符串并解析它并将变量值保存到变量中。

基本上是PHP的$ _GET。

function getUrlVars() 
{
 var map = {}; 
 var parts = window.location.search.replace(/[?&]+([^=&]+)(=[^&]*)?/gi, 

   function(m,key,value) 
     { map[key] = (value === undefined) ? true : value.substring(1); }); 

 return map; 
}

基本上这个脚本做我想要的。从此URL字符串:

/autopop.html?Email=test%40test.com&LastName=Test+last&&FirstName=+Test+First

我得到了值:

Email = test%40test.com

LastName = Test+last

FirstName = +Test+First

我想要做的是使用此信息在同一页面上自动填充表单。 (我知道你在想什么服务器端脚本会是一个更好的解决方案,但是老板说我们无法访问它,相信我,我已经尝试过了)

长话短说,这是我的其余代码:

var keys = getUrlVars();

$(document).ready(function(){
    var fname = keys['FirstName'].replace(/\+/g , " ").trim();
    var lname = keys['LastName'].replace(/\+/g , " ").trim();
    var email = decodeURIComponent(keys['Contact0Email'].replace(/\+/g , " ")).trim();
    $("#Email").val(email);
    $("#FirstName").val(fname);
    $("#LastName").val(lname);
});

此代码完成工作。除了一个浏览器外。 IE浏览器。

IE不支持decodeURIComponent左右我读过。无论如何,我尝试使用其他功能,例如decodeURIescape都会产生不需要的结果。

我的谷歌搜索没有产生任何结果,只有半有趣articles(完全偏离主题,但我认为我只是分享它)。

没有解决方案。任何人都能解释一下吗?如何在IE上完成这项工作?

1 个答案:

答案 0 :(得分:8)

即使在IE6中,您读错了decodeURIComponent works just fine in IE

但是,trim在IE浏览器prior to IE 9中不起作用,这就是导致脚本崩溃的原因。

如需替代工作,请参阅此处接受的答案:.trim() in JavaScript not working in IE
或者使用jQuery trim()方法,因为你已经在使用jQuery了。