2009-07-30 71 views
6

非常簡單,我有一個JS腳本,包含在許多不同的網站上,需要傳遞給它的參數。Javascript中是否有任何類似於PHP中的__FILE__變量?

這將是有用的,如果這些可以通過URL進行傳遞,例如:

<script type="text/javascript" 
    src="http://path.to/script.js?var1=something&var2=somethingelse"></script> 

是的,你仍然可以預先填入變數,在一個單獨的腳本標記,但它的混亂和不容易微幅下挫要通過:

<script type="text/javascript">var1=something; var2=somethingelse</script> 
<script type="text/javascript" src="http://path.to/script.js"></script> 
+0

http://stackoverflow.com/questions/1017424/pass-vars-to-javascript-via-the-src-attribute/1017461 #1017461 – 2009-07-30 06:34:57

回答

1

error.fileName會告訴你,劇本是從文件(不知道是否工作在每一個瀏覽器,我已經在Firefox &歌劇測試過)

var filename = (new Error).fileName; 
+2

沒有去IE和Chrome。 – 2009-07-30 01:58:04

+0

這真的很接近,並且因爲IE是......嗯,IE,我90%肯定有一個瀏覽器特定的等價物。 – 2009-07-31 22:17:01

0

爲了做這樣的事情,你需要使用服務器端語言來爲你呈現JS。

我不會推薦它。

2

只有當變量可以確定什麼加載了JavaScript代碼時(例如,請求由PHP處理,動態構建JS文件),才應使用此方法。

如果您想要將信息傳遞給JavaScript代碼,請在代碼中加載後使用函數或變量。

3

沒錯。額外的獎勵:我將查詢字符串參數轉換爲更加可用的JavaScript哈希值。

HTML:

<script src="script.js?var1=something&var2=somethingelse" type="text/javascript"></script> 

script.js

var scriptSource = (function() { 
    var scripts = document.getElementsByTagName('script'); 
    return scripts[scripts.length - 1].src 
}()); 

var params = parseQueryString(scriptSource.split('?')[1]); 

params.var1; // 'something' 
params.var2; // 'somethingelse' 

// Utility function to convert "a=b&c=d" into { a:'b', c:'d' } 
function parseQueryString(queryString) { 
    var params = {}; 
    if (queryString) { 
     var keyValues = queryString.split('&'); 
     for (var i=0; i < keyValues.length; i++) { 
      var pair = keyValues[i].split('='); 
      params[pair[0]] = pair[1]; 
     } 
    } 
    return params; 
} 
相關問題