问题
I have a javascript file that I reference in HTML with standard <script src="foo.js?param"></script>
. In the file I want to distinguish e.g. loading the file with foo.js
from foo.js?auto
and foo.js?noauto=true
, but not if the file is renamed to bar.js
and referenced with the same parameter. How can I accomplish this, preferably not using any framework?
回答1:
Take a look a scriptaculous' approach:
var js = /scriptaculous\.js(\?.*)?$/;
$$('head script[src]').findAll(function(s) {
return s.src.match(js);
}).each(function(s) {
var path = s.src.replace(js, ''),
includes = s.src.match(/\?.*load=([a-z,]*)/);
(includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
function(include) { Scriptaculous.require(path+include+'.js') });
});
I think it runs through all script elements and finds the reference to itself, and then parses that URL.
回答2:
If you want to do it reliably, then you need to provide different JS for each URL. You could generate it with a server side script.
If you want to do it in pure JS, then you can getElementsByTagName('script')
and assume that last script is the one that matched (it might not be, e.g. if script elements are being added using DOM after the page has loaded).
来源:https://stackoverflow.com/questions/2221564/get-parameters-of-js-file