此代码在IE中不起作用

rgi*_*gin 0 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; 
}
Run Code Online (Sandbox Code Playgroud)

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

/autopop.html?Email=test%40test.com&LastName=Test+last&&FirstName=+Test+First
Run Code Online (Sandbox Code Playgroud)

我得到了价值观:

Email = test%40test.com

LastName = Test+last

FirstName = +Test+First
Run Code Online (Sandbox Code Playgroud)

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

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

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);
});
Run Code Online (Sandbox Code Playgroud)

这段代码完成了工作.除了一个浏览器外.IE浏览器.

IE不支持decodeURIComponent或所以我读过.无论如何,我尝试使用其他功能,decodeURI并且escape都会产生不需要的结果.

我的谷歌搜索没有产生任何东西,只有半有趣的文章(完全偏离主题,但我想我只是分享它).

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

Sha*_*ard 8

你读错了,decodeURIComponent 在IE中运行得很好,即使在IE6中也是如此.

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

对于工作替代方案,请参阅此处接受的答案:JavaScript中的.trim()无法在IE中工作
或者使用jQuery trim()方法,因为您已经在使用jQuery了.