我有一个简单的 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);
最佳答案
您使用的 for ... of 不受 IE 支持,请尝试使用 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);
老实说,第二个 for 循环的点让我感到困惑,你也许可以完全摆脱它。
编辑:正如 @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 只是快速 Google 搜索中显示的少数库之一。
关于javascript - 简单的 jQuery 脚本在 Chrome 中工作,在 IE 中损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44285814/