Cambiare sorgente libreria se non viene trovata

Alberto Buracchi

Nuovo Utente
9 Dic 2012
15
0
0
Torino
Il problema è questo:

Nella costruzione di un sito sto utilizzando JQUERY attingendo dalle librerie messe a disposizione da google perchè in genere essendo librerie largamente usate spesso sono già nella cache e quindi non necessitano di essere caricate.

Codice:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>[/B]
<script type="text/javascript">
jQuery().ready(function (){
	$(function() {
	$("#avviso").hide();
	$(".reindir").show();
	setTimeout(function() {
  		window.location="index.php";
		}, 1000);  //lavora con tutti i browser
	});
});

... eccetera eccetera
});

Ora il problema è che talvolta mi trova a lavorare in fase di test in locale con un notebook e non sempre ho una connessione disponibile. Avrei quindi la necessità di poter dirigere la scelta sulla stessa libreria ma in locale del tipo

Codice:
<script type="text/javascrip">
if (!jQuery) {
document.write('<script src=".../libraries/jquery-1.3.2.min.js" type="text/javascript"></script>');
}
</script>

Il problema è che non posso scrivere una tag <script> dentro l'altra. Insomma così non funziona.
Qualcuno saprebbe darmi qualche indicazione per risolvere?
 
Ciao,

per inserire un js nel document.write devi mettere il back-slash prima degli slash \/

document.write('<script src="jquery-1.3.2.min.js" type="text\/javascript"><\/script>');

quella if

if (!jQuery) non funziona, non è dichiarata

Valeria.
 
Io ti consiglio di metterlo solo in locale jquery, cosi lo hai sempre li, comunque prova cosi se vuoi aggiungere il nuovo script nel caso che il primo non sia raggiungibile

Codice:
<head>
<script src="//ajax.googleapis.comx/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
....
</head>
<script>
    if(typeof jQuery == 'undefined'){
        var script=document.createElement('script'); 
        script.src=".../libraries/jquery-1.3.2.min.js"; 
        document.getElementsByTagName('head')[0].removeChild(document.getElementsByTagName('script')[0]);
        document.getElementsByTagName('head')[0].appendChild(script);
    }
</script>
 
Grazie a tutti per i suggerimenti.

Io ti consiglio di metterlo solo in locale jquery, cosi lo hai sempre li, comunque prova cosi se vuoi aggiungere il nuovo script nel caso che il primo non sia raggiungibile

Codice:
<head>
<script src="//ajax.googleapis.comx/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
....
</head>
<script>
    if(typeof jQuery == 'undefined'){
        var script=document.createElement('script'); 
        script.src=".../libraries/jquery-1.3.2.min.js"; 
        document.getElementsByTagName('head')[0].removeChild(document.getElementsByTagName('script')[0]);
        document.getElementsByTagName('head')[0].appendChild(script);
    }
</script>

Ho provato ad inserire il codice di cui sopra dopo </HEAD> e prima di <BODY>, ma non funziona. Non mi carica la libreria in locale.
Forse mi conviene utilizzare php?
 
Grazie a tutti per i suggerimenti.



Ho provato ad inserire il codice di cui sopra dopo </HEAD> e prima di <BODY>, ma non funziona. Non mi carica la libreria in locale.
Forse mi conviene utilizzare php?
A me ha funzionato, forse jquery lo hai incluso già correttamente quindi non lo sostituisce
 
A me ha funzionato, forse jquery lo hai incluso già correttamente quindi non lo sostituisce

Forse ho sbagliato qualcosa perchè

in jQuery.ready(function() {...etc.

Codice:
$("#avviso").hide();

non mi nasconde l'avviso: devi abilitare l'esecuzione di codice javascript nel tuo browser!

Allora, l'ho risolto al momento così, prendendo spunto da qui

PHP:
<?php
$link = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js";
flush();
$fp = @fopen($link, "r");
if (!$fp) 
{
print '<script src="../../libraries/jquery-1.7.2.min.js" type="text/javascript"></script>';
}
else
{
fclose($fp); 
print '<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>';
}
?>

Però voglio capire dove sbaglio io nel codice javascript che mi hai consigliato.
 

Discussioni simili