我有一个简单的jQuery,在3秒后用随机字符串填充字段。
以下是演示:https://jsfiddle.net/5sLrtg5t/
如果您在IE 11中加载此演示,则不会填充该字段。这是为什么?
function makeid()
{
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 8; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
var urlParams = new URLSearchParams(window.location.search);
var keys = urlParams.keys();
for (key of keys) {}
setTimeout(function() {
if(document.location.search.length) {
} else {
$('#address').val(makeid());
}
}, 3000);
答案 0 :(得分:2)
您正在使用IE不支持的for ... of,请尝试使用for ... in
(如果您想要类似的行为,请使用Object.hasOwnProperty()):
function makeid()
{
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 8; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
var urlParams = new URLSearchParams(window.location.search);
var keys = urlParams.keys();
for (key in keys) {}
setTimeout(function() {
if(document.location.search.length) {
} else {
$('#address').val(makeid());
}
}, 3000);
我会说实话,第二个循环让我困惑,你可能完全摆脱它。
编辑:正如@charlietfl URL API的评论中提到的那样,整体也不受支持。
How can I get query string values in JavaScript?有一个很好的功能,我认为应该做一些类似于你想做的事情:
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
或者,也有相当多的库可以在不受支持的浏览器上使用URL API,WebReflection/url-search-params只是快速谷歌搜索中出现的少数几个。