• 对 Url 进行封装


    代码如下:

    var Util = {
            /**
             * 获取 url 的 fragment(即 hash 中去掉 # 的剩余部分)
             *
             * 如果没有则返回空字符串
             * 如: http://example.com/path/?query=d#123 => 123
             *
             * @param {String} url url
             * @returns {String}
             */
            getUrlFragment: function(url) {
                var hashIndex = url.indexOf('#');
                return hashIndex === -1 ? '' : url.slice(hashIndex + 1);
            },
            /**
             * 获取一个链接相对于当前页面的绝对地址形式
             *
             * 假设当前页面是 http://a.com/b/c
             * 那么有以下情况:
             * d => http://a.com/b/d
             * /e => http://a.com/e
             * #1 => http://a.com/b/c#1
             * http://b.com/f => http://b.com/f
             *
             * @param {String} url url
             * @returns {String}
             */
            getAbsoluteUrl: function(url) {
                var link = document.createElement('a');
                link.setAttribute('href', url);
                var absoluteUrl = link.href;
                link = null;
                return absoluteUrl;
            },
            /**
             * 获取一个 url 的基本部分,即不包括 hash
             *
             * @param {String} url url
             * @returns {String}
             */
            getBaseUrl: function(url) {
                var hashIndex = url.indexOf('#');
                return hashIndex === -1 ? url.slice(0) : url.slice(0, hashIndex);
            },
            /**
             * 把一个字符串的 url 转为一个可获取其 base 和 fragment 等的对象
             *
             * @param {String} url url
             * @returns {UrlObject}
             */
            toUrlObject: function(url) {
                var fullUrl = this.getAbsoluteUrl(url),
                    baseUrl = this.getBaseUrl(fullUrl),
                    fragment = this.getUrlFragment(url);
    
                return {
                    base: baseUrl,
                    full: fullUrl,
                    original: url,
                    fragment: fragment
                };
            },
            /**
             * 判断浏览器是否支持 sessionStorage,支持返回 true,否则返回 false
             * @returns {Boolean}
             */
            supportStorage: function() {
                var mod = 'sm.router.storage.ability';
                try {
                    sessionStorage.setItem(mod, mod);
                    sessionStorage.removeItem(mod);
                    return true;
                } catch(e) {
                    return false;
                }
            }
        };
    
       
  • 相关阅读:
    使用Link Shell Extension方便的创建同步文件
    DOM案例【3】密码强度检查案例
    DOM案例【2】注册文本倒计时
    DOM案例【1】文本时钟
    HTML5 and CSS【01】Font
    常用单词
    CSS基础【01】类和ID选择器的区别
    【03】Html重点
    【02】Html(如鹏)
    C#MD5计算代码
  • 原文地址:https://www.cnblogs.com/vali/p/7337669.html
Copyright © 2020-2023  润新知