2011-08-08 5 views
3

Comment puis-je accéder et modifier les attributs de la variable, en particulier le src? quelque chose comme ça peut-être:Accéder et modifier les attributs de <script> tag

document.scripts[i].src 

Bien sûr, il ne fonctionne pas! Je compte modifier cette façon:

document.scripts[i].src += '?ver3' 

dans une boucle pour tout le script sur la page.

+3

Cela semble difficile et sujette à des problèmes. Quel est votre objectif final avec ceci, qu'essayez-vous de faire? –

+0

Est-ce pour éviter la mise en cache du navigateur? si c'est le cas, je pense qu'il existe une meilleure solution que celle-ci. – Curt

+0

Vous ne voulez vraiment pas jouer avec la propriété 'scr' d'un tag de script. Même si vous ne pouvez pas "décharger" un script, je suppose que la plupart des navigateurs vont au moins transférer/charger à nouveau le script. – jAndy

Répondre

4

Vous pouvez utiliser document.getElementsByTagName('script') pour obtenir tous les éléments de script dans la page. Toutefois, tous les éléments de script que vous trouvez auront déjà chargé leur contenu, il sera donc trop tard pour modifier l'URL qu'ils utilisent pour charger le contenu.

Si vous souhaitez modifier les URL, vous devez utiliser une solution côté serveur afin que les URL soient modifiées lorsqu'elles arrivent dans le navigateur.

+0

de toute façon pour le faire côté client? Je veux dire ce que c'est censé être? Firefox add-on, un serveur proxy (local)? – z403

2

Avec jQuery:

jQuery("script").each(function(){ 
    var old_src = jQuery(this).attr('src'); 
    jQuery(this).attr('src', old_src+'?ver3'); 
}) 

Avec un bon vieux JS:

var scripts = document.getElementsByTagName('script'); 
for (var i=0; i<scripts.length; i++){ 
    var old_src = scripts[i].getAttribute('src'); 
    scripts[i].setAttribute('src', old_src +'?ver3'); 
} 
+1

Ça ne marche pas pour moi. Comme l'a dit Guffa, vous ne pouvez pas changer le contenu du script chargé. Vous pouvez changer l'attribut "src" mais le nouveau script ne se chargera pas. –

0

Installez httpd (Apache) et PHP. Mettez dans votre fichier hosts (ou hosts.txt) cette ligne:

127.0.0.1 example.com 

Ecrire un script php nommé index.php et le mettre dans le répertoire du serveur (/ var/www/html ou certains comme celui-ci, dépend configuration).

Lorsque vous chargez dans le navigateur Web http://example.com vous serez redirigé vers 127.0.0.1 (votre serveur local) et en PHP cette variable $_SERVER["HTTP_HOST"] sera réglé sur example.com. Obtenez ce site (en utilisant par exemple cURL), changez ce que vous voulez (en utilisant les fonctions de chaîne, regex, DOMDocument, SimpleXML, etc.) et envoyez le contenu modifié au navigateur.

C'est tout. :)

Questions connexes