Karthik
Karthik

Reputation: 824

How to get the currently loading script name and the url variable of the script?

I am loading a script using the script embed tag and I want to get the url variables and the loading script name inside the script. Is it possible? For Example,

<script src="test.js?id=12"></script>

Inside test.js is there any way to get the url variable id?

Any help would be appreciated.

Thanks,
Karthik

Upvotes: 1

Views: 6302

Answers (4)

Karthik
Karthik

Reputation: 824



Thanks for all your efforts I have made that working by assigning an id attribute in the script tag and accessed via jQuery,

<script src="test.js?id=12" id="myScript"></script>

var currentScript = $("#myScript").attr('src'); //This will give me my script src

Thanks,
Karthik

Upvotes: 2

Khez
Khez

Reputation: 10350

If you want to get a variable from the current URL you can use this:

function queryParser(url){
    this.get=function(p){return this.q[p];}
    this.q={};
    this.map=function(url){
        url=url || window.location.search.substring(1);
        var url=url.split('&');
        var part;
        for(var i=0;i<url.length;i++){
            part=url[i].split('=');
            this.q[part[0]]=part[1];
        }
    }
    this.map(url);
}
var query=new queryParser();
// assuming you have ?test=something
alert(query.get('test'));

I recommend you map the result, so you don't re-parse whenever you want to find a specific element.

I don't really know why you'd pass a query string in a script tag like that, unless you specifically want off-site includes with a simple robust system for various effects. Or are actually using PHP to handle that request.

If you want to "send" a variable to one of your scripts, you can always do:

<script type="text/javascript">
var myVar="I'm in global scope, all scripts can access me";
</script>
<script src="test.js?id=12"></script>

If you really need to get the URL of the currently included script, you can use the code supplied by my peers in the other answers, you can then use:

var query=new queryParser(scriptURL);
alert(query.get('id'));// would alert 12 in your case

Upvotes: 1

Alex K.
Alex K.

Reputation: 175976

Aside from the answers in the linked post, FWIW with Firefox 4 only you can (with caveats); document.currentScript.src which will return the full url, including arguments.

Upvotes: 4

Ivan Arrizabalaga
Ivan Arrizabalaga

Reputation: 685

Navigating through the link on your comments you can get the proper answer. Anyway, to make things easier:

var allScripts=document.getElementsByTagName('script');
var indexLastScript= allScripts.length -1;
alert (allScripts[indexLastScript].src);

This will show up "test.js?id=12" as a regular String so its up to you to split it in order to get de param.

Hope it helps, I've tried it on the run over the Chrome Javascript Console. :D.

Upvotes: 0

Related Questions