如何访问传递给脚本源中的<script>标记的请求参数?</script>

时间:2012-08-31 07:30:40

标签: javascript html

我希望将请求参数传递给要加载的JavaScript。然后,此参数可用作脚本中的常量。

其中一个示例是fancybox 2.x如何获取v=2.1.0参数as defined in the instructions

通过fancybox源搜索我无法确定如何使用它,它是CSS和JavaScript所必需的。

我对此的主要要求是能够将应用程序上下文路径传递给处理ReST请求的JS。

<script type="text/javascript"
        src="<c:url value="/js/rest.js?ctx=${pageContext.request['contextPath']}"/>"></script>

3 个答案:

答案 0 :(得分:3)

首先,您必须识别脚本(您可以为脚本标记指定ID)。脚本位于document.scripts节点列表中。然后你取它的src属性(一个字符串),将它分开到问号上并取得结果数组的第二个元素。这可以进一步处理。

类似的东西:

var script = document.scripts[0]
   ,params = script.src.split('?')[1].split('&')
   ,paramsObj = {};

for (var i=0;i<params.length;i+=1){
  var keyvalue = params[i].split('=');
  paramsObj[keyvalue[0]] = keyvalue[1];
}

答案 1 :(得分:0)

我不确定你想要实现的目标。

如果您希望JavaScript能够从当前页面的URL的查询字符串中读取值,您可以这样做:

// URL of current document is http://example.com/mypage.html?ctx=thingy
location.search.ctx; // thingy

但是如果你想将一个参数从标记传递到JavaScript文件,为什么不事先在文档中设置它呢?

<script>
    ctx = ${pageContext.request['contextPath']};
</script>

<script src="/js/rest.js"></script> // rest.js just references ctx directly.

答案 2 :(得分:0)

如果您可以使用jQuery,则可以先选择src属性以/js/rest.js开头的所有脚本,然后在src属性中获取参数。

function getCtx(){    
  $("script[src^='/js/rest.js']").each(function(){
    return this.src.replace("/js/rest.js?ctx=", "");
  });
}

在其他情况下,您可能需要使用decodeURIComponent

相关问题