嗨所以我有这个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
左右我读过。无论如何,我尝试使用其他功能,例如decodeURI
和escape
都会产生不需要的结果。
我的谷歌搜索没有产生任何结果,只有半有趣articles(完全偏离主题,但我认为我只是分享它)。
没有解决方案。任何人都能解释一下吗?如何在IE上完成这项工作?
答案 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了。