簡體   English   中英

如何訪問傳遞給<script> tag within the script source?

[英]How can I access request parameters passed to a <script> tag within the script source?

我希望將請求參數傳遞給要加載的JavaScript。 然后,可以將此參數用作腳本中的常量。

這樣的一個例子是fancybox 2.x如何要求按照指令中的定義 v=2.1.0

在fancybox來源中搜索時,我無法確定它是如何使用的,對於CSS和JavaScript都是必需的。

我對此的主要要求是能夠將應用程序上下文路徑傳遞給處理ReST請求的JS。

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

首先,您必須標識腳本(可以給腳本標簽提供一個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];
}

我不確定您要達到的目標。

如果希望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.

如果可以使用jQuery,則可以首先選擇src屬性以/js/rest.js開頭的所有腳本,然后在src屬性中獲取參數。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM