zoukankan      html  css  js  c++  java
  • js获取url参数 兼容某些带#url

    网上有大把现成的代码,不过有点小小的瑕疵

    例如目前最流行的 正则法:  

    function getArgument(_arg)
    {
         var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
         var r = window.location.search.substr(1).match(reg);
         if(r!=null)return  unescape(r[2]); return "";
    }
    

    但是当URL中 包含#的时候会失效,例如 http://abc.def.com/kkk/#dfff?id=123344

    原因是在获取?后的字符串使用了:

    window.location.search
    

    但是现在因为有了# 而# 后面的部分作为了 hash值, 所以用 loaciton.search取不到值了

    所以 要兼容这种情况就不能再这样取,用原始的办法取一次,

    兼容版如下:

    function getArgument(_arg) 
    {
    	var _t=window.location.href.split("?")
    	if(_t.length>1)
    	{
    	 	var reg = new RegExp("(^|&)"+ _arg +"=([^&]*)(&|$)");
         	     var r = _t[1].match(reg);
         	     if(r!=null)return  unescape(r[2]); return "";
    	}
    	return "";
    }
    

    注意 我这里在返回结果是进行了unescape 解码,如果不需要请删除!

    没有值的时候返回"";

  • 相关阅读:
    操作系统基础知识与常见问题记录
    String
    Function
    HelloWorld
    替换空格
    二维数组中的查找
    建造者模式(Builder Pattern)
    单例模式(Singleton Pattern)
    工厂方法(Factory Pattern)
    设计模式概述
  • 原文地址:https://www.cnblogs.com/luoeeyang/p/5070904.html
Copyright © 2011-2022 走看看