我希望将请求参数传递给要加载的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>
答案 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
。