如何从url获取参数到javascript或jquery文件

How get params from url to javascript or jquery file?

本文关键字:javascript jquery 文件 参数 url 获取      更新时间:2023-09-26

例如js文件包含到页面:

<script src="/js/example/test.js?count=2321"></script>

如何从url /js/example/test.js?count=2321获取 javascript文件test.js中的值count ?

注::如果我不知道位置键,怎么得到?即如何从键获取值参数?

定义如下方法从url中获取所有键值:

function getUrlVars(url)
{
   var vars = [], hash;
   if(url == undefined || url.indexOf('?') ==  -1)
     return vars;
   var hashes = url.slice(url.indexOf('?') + 1).split('&');
   for(var i = 0; i < hashes.length; i++)
   {
      hash = hashes[i].split('=');
      vars.push({key : hash[0] , value : hash[1]});
   }
   return vars;
}

此方法返回一个对象数组,其中包含url的所有可用的Key/Values。

最后你可以从任何脚本标签中获得src,并获得所有可用的键/值,如下所示:

$("script").each(function(){
  if($(this).attr("src") != undefined){
    console.log($(this).attr("src") + ":");
    console.log(getUrlVars($(this).attr("src")));
  }
});

$(document).ready(function(){
  function getUrlVars(url)
  {
   var vars = [], hash;
    if(url == undefined || url.indexOf('?') ==  -1)
      return vars;
   var hashes = url.slice(url.indexOf('?') + 1).split('&');
   for(var i = 0; i < hashes.length; i++)
   {
      hash = hashes[i].split('=');
      vars.push({key : hash[0] , value : hash[1]});
   }
   return vars;
  }
  $("script").each(function(){
    if($(this).attr("src") != undefined){
      console.log($(this).attr("src") + ":");
      console.log(getUrlVars($(this).attr("src")));
    }
  });
   
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="/js/example/test.js?count=2321&customKey=1233&customKey2=sdffds"></script>
<script src="/js/example/test1.js?count2=2321&Key2=sdffds"></script>
<script src="/js/example/test2.js?count2=2321&key1=1233"></script>

您还可以使用以下方法从任何url获取特定的密钥:

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, " "));
}

并获取键的值,如:

getParameterByName("count", $("script[src*='test.js']").attr("src"))

$(document).ready(function(){
  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, " "));
  }
  
   console.log( getParameterByName("count", $("script[src*='test.js']").attr("src")));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="/js/example/test.js?count=2321"></script>

编辑(检测当前脚本):有很多方法来检测当前脚本标签,你可以找到这里,但我认为最准确的方法是在每个脚本中定义一个方法,并在它的名字上循环所有脚本以找到你想要的脚本:

function isMe(scriptElem){
   return scriptElem.getAttribute('src') === "Your Current Script Src";
}
var me = null;
var scripts = document.getElementsByTagName("script")
for (var i = 0; i < scripts.length; ++i) {
   if( isMe(scripts[i])){
     me = scripts[i];
   }
}
console.log( getParameterByName("count", $(me).attr("src")));

试试这样做。

<script>上循环,搜索您想要的脚本并在参数?处剪切

$(document).ready(function(){
  var parameters = $("script[src*='test.js']").attr("src").split('?')[1].split('&');
  var count="Not found";
  for(var i=0;i<parameters.length;i++)
  {
    var param=parameters[i].split('=');
        if(param[0]=="count")
            count=param[1];
  }
  console.log(count);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="/js/example/test.js?not=2321&over=blabla&one=two&count=1234"></script>

Try This

function getParameterByName(name,url) 
{
    name = name.replace(/['[]/, "''[").replace(/[']]/, "'']");
    var regex = new RegExp("[''?&]" + name + "=([^&#]*)"),
    results = regex.exec(url);
    return results === null ? "" : decodeURIComponent(results[1].replace(/'+/g, " "));
}
$(document).ready(function(){
    var url = $("script[src*='test.js']").attr("src");
    getParameterByName('count',url);
});

你也可以这样做:

给你的脚本一个id:

<script id="YourId" src="/js/example/test.js?count=2321"></script>

然后:

$(document).ready(function() {
    alert($("#YourId").attr('src').split('=')[1]);
});
var paramCount = getParameterByName('count');
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, " "));
}