2010-02-08 7 views
3

J'ai un fichier javascript que je référence en HTML avec la norme <script src="foo.js?param"></script>. Dans le fichier, je veux distinguer par ex. chargement du fichier avec foo.js de foo.js?auto et foo.js?noauto=true, mais pas si le fichier est renommé bar.js et référencé avec le même paramètre. Comment puis-je accomplir cela, n'utilisant de préférence aucun cadre?Obtenir les paramètres du fichier .js

+0

Possible copie: http://stackoverflow.com/questions/1954099/help-me-to-understand-script-srcsome-jsparam1oneparam2two –

Répondre

5

un coup d'oeil une approche scriptaculous':

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

Je pense qu'il fonctionne dans tous les éléments de script et trouve la référence à lui-même, et puis cette URL Parsis.

1

Si vous voulez le faire de manière fiable, vous devez fournir différents JS pour chaque URL. Vous pouvez le générer avec un script côté serveur. Si vous voulez le faire en langage JS pur, vous pouvez getElementsByTagName('script') et supposer que le dernier script est celui qui correspond (il peut ne pas être, par exemple, si des éléments de script sont ajoutés en utilisant DOM après le chargement de la page).

+0

Bonne idée, mais je suppose que je devrais avertir les utilisateurs de ne pas changer le nom de l'inclus fichier ou appelle une méthode en cas d'exécution explicite sur le chargement du corps. – Residuum

Questions connexes