url - IE11 - 对象不支持此操作 - URL 对象 - 解决方法

标签 url internet-explorer-11

我正在尝试使用以下命令将 URL 字符串转换为 URL 对象:

var newUrl = new URL("http://www.testsite.com?name=abc&class=123");

它适用于 Chrome 和 Firefox,但不适用于 IE11。是否有已知的解决方法?

谢谢。

最佳答案

不,URL 对象在 IE 中不可用 https://developer.mozilla.org/en-US/docs/Web/API/URL

但是,您可以使用一些小型库来伪造它 http://blog.stevenlevithan.com/archives/parseuri

// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
// http://blog.stevenlevithan.com/archives/parseuri

function parseUri (str) {
    var o   = parseUri.options,
        m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
        uri = {},
        i   = 14;

    while (i--) uri[o.key[i]] = m[i] || "";

    uri[o.q.name] = {};
    uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
        if ($1) uri[o.q.name][$1] = $2;
    });

    return uri;
};

parseUri.options = {
    strictMode: false,
    key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
    q:   {
        name:   "queryKey",
        parser: /(?:^|&)([^&=]*)=?([^&]*)/g
    },
    parser: {
        strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
        loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
    }
};

使用

parseUri.options.strictMode = true;

关于url - IE11 - 对象不支持此操作 - URL 对象 - 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48525252/

相关文章:

javascript - axios获取请求-img src链接响应格式-/正在转换为空格

python - 解析 URI 参数和关键字值对

javascript - 如何在搜索中获取用户输入并在 <a> 标签中的 HTM url 末尾获取 "append"?

ruby-on-rails - 从像 http ://localhost:3000/user/adem-balka with Rails 5 这样的友好 url 获取参数

javascript - Windows 8.1 IE11(Edge) 谷歌地图 JavaScript API v3 双指缩放问题

Javascript - 从当前网址中删除查询字符串

javascript - Intersection Observer 在 Angular 7 应用程序中卡住 IE11

javascript - 输入scrollLeft在IE11中永远不会改变

internet-explorer - IE11元元素破坏了SVG