简单的jQuery脚本在Chrome中运行,在IE中被破坏

时间:2017-05-31 13:12:47

标签: javascript jquery

我有一个简单的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);

1 个答案:

答案 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只是快速谷歌搜索中出现的少数几个。