Home  >  Article  >  Web Front-end  >  Get the code of the currently executed script file name in the browser_javascript tips

Get the code of the currently executed script file name in the browser_javascript tips

WBOY
WBOYOriginal
2016-05-16 18:04:311208browse

Background
A colleague asked a question, how to get the current file name in a JavaScript file dynamically inserted in the browser?

In addition to the server outputting a file name, there should only be the following three ways to obtain it in the script.

Solution A
The common solution can only be used for the introduction of static scripts tags on the page or a single dynamic load.

Copy code The code is as follows:

var scripts = document.getElementsByTagName('script');
var filename = scripts[scripts.length -1].src;

Dynamic insertion of multiple script tags:
Copy the code The code is as follows:

loadScript('b.js?param=1')
loadScript('a.js?param=2')
loadScript('b.js?param=3')
loadScript('a.js?param=4')

/* Output
a.js >>> ; http://localhost:800/io/a.js?param=4
a.js >>> http://localhost:800/io/a.js?param=4
b.js >>> http://localhost:800/io/a.js?param=4
b.js >>> http://localhost:800/io/a. js?param=4
*/

Solution B
Abnormal type, only works on FireFox:
Copy code The code is as follows:

try {
throw new Error();
}
catch(exception){
console.log ( exception.fileName );
}

Solution C
My solution, operation source code:
Copy code The code is as follows:

requireScript('a.js?' Date.now(),function(text,src) {
console.log('text :',text);
globalEval('(function() { nvar __filename = "' src '";n' text 'n;})();');
})

Browser output:
Copy code The code is as follows:

<script> (function() { <br>var __filename = "a.js?1310971812334"; <br>var scripts = document.getElementsByTagName('script'); <br>console.log('a.js',' > >> ',scripts[scripts.length -1].src); <br>console.log(__filename); <br>;})();</script>

Advantages: reliable, cacheable, deferrable execution, scalable.
Restrictions: 1) Variable naming is agreed to be "__filename"; 2) Same origin policy.
I also thought of this loading strategy to load the popular CoffeeScript, such as:

Copy the code The code is as follows:

requireScript('script.coffee',function(text,src) {
if( isCoffeeScript(src) )
globalEval( CoffeeScript.compile(text) );
})

Link

Cross-Origin Resource Sharing

Passing JavaScript arguments via the src attribute

CoffeeScript

View or download

https://gist.github.com/1088730

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn