Finns det någon motsvarighet i Javascript till variabeln __FILE__ i PHP?


Ganska enkelt, jag har ett JS-skript som ingår på många olika webbplatser och behöver ha parametrar skickade till sig.

Det skulle vara användbart om dessa kunde skickas via URL:en, t.ex:

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

Ja, du kan fortfarande förifylla variabler, i en separat skript-tagg, men det är lite rörigt och mindre lätt att dela med sig av:

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

Svar #1

Japp. Extra fördel: jag omvandlar frågesträngsparametrarna till en mer användbar JavaScript-hash.

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;
}

Svar #2

Denna metod bör endast användas om variablerna skulle avgöra vilken JavaScript-kod som laddades (t.ex. med förfrågan som bearbetas av PHP, dynamiskt bygger JS-filen).

Om du vill överföra information till JavaScript-kod, använd funktioner eller variabler i koden efter att den har laddats.