Lo script che presentiamo riprende una soluzione adottata da Html.it per i link esterni.
Nel corso del tempo vi sarete probabilmente accorti (anzi sicuramente) che i link non interni al nostro network si aprono dentro ad un frameset, il cui frame basso contiene un menù di navigazione.
Molte volte vi sarà stato risposto che una soluzione del genere è raggiungibile solo con linguaggi lato server come ASP, PHP o PERL. Ma, a dire il vero, c'è anche una soluzione che non richiede particolari requisiti se non l'uso di javascript che, come sappiamo, è lato client.
Lo script è compatibile con i tre maggiori browser in circolazione e non dà problemi di sorta.
L'esempio si compone di 3 file:
- esempio.htm
- frame.htm
- menu.htm
Per una più semplice comprensione del presente script fai continuamente riferimento ai file sopracitati, verificando le procedure e i dati espressi. Solo in questo modo, con un continuo confronto, comprenderai le peculiarità di questo Javascript.
Lo script andrà inserito nelle pagine in cui si troveranno i link da aprire esternamente al nostro sito.
Il codice va inserito nel corpo della pagina prima di ogni collegamento:
<script type="text/javascript" language="javascript">
<!--
//Half copyright Saibal - May 2002 - http://www.lorenzone.it
var mydomain="html.it"
var auto=1
if (!auto)
document.write('<form name="targetmain"><input type="checkbox"
name="targetnew" checked onClick="dynamiclink()">Apri i link in una nuova pagina</form>')
function dynamiclink(){
if (auto||(!auto&&document.targetmain.targetnew.checked)){
for (i=0; i<=(document.links.length-1); i++) {
if (document.links[i].hostname.indexOf(mydomain)==-
1&&document.links[i].href.indexOf("http:")!=-1||document.links[i].href.indexOf("frame.htm")!=-1)
document.links[i].target="_blank"
}
}
else
for (i=0; i<=(document.links.length-1); i++) {
if (document.links[i].hostname.indexOf(mydomain)==-1)
document.links[i].target=""
}
}
if (auto)
window.onload=dynamiclink
// -->
</script>
La configurazione è semplicissima:
var mydomain="html.it"
è la variabile che contiene il nostro nome di dominio in modo che i link che puntano internamente al nostro sito vengano aperti con target self.
Se ad esempio il nostro sito si chiama "http://www.ciccioxxxx.it" dovremo inserire solamente "ciccioxxxx.it".
Se invece abbiamo uno spazio gratuito di questo tipo:
"http://spaziolibero.it/utenti/nostracartella"
dovremo inserire nella variabile:
"spaziolibero.it/utenti/nostracartella"
var auto=1
se impostata su "1" fa in modo che i link esterni vengano automaticamente aperti in una nuova pagina. se messa su "0" comparirà un checkbox che permetterà all'utente di scegliere se aprire i collegamenti internamente o esternamente.
Ogni link che segue questo codice invece andrà strutturato così:
1) per i link interni (assoluti o relativi) procederemo normalmente come abbiamo sempre fatto:
<a href="https://www.html.it/jscript/index.html">Link assoluto ad Html.it </a>
<a href="../../index.html">Link relativo ad Html.it</a>
2) i link che vogliamo aprire dentro al frameset, invece, saranno così strutturati:
<a href="https://www.html.it/javascript/esempionline/165/frame.htm?http://freephp.html.it">Freephp.html.it</a>
Come vedete prima del "?" c'è il percorso (che può anche essere relativo) che porta al frameset contenente il sito esterno. È importante lasciare come nome "frame.htm" altrimenti andrebbe cambiato anche nello script.
I documenti "frame.htm" e "menu.htm" non vanno modificati in modo particolare.
Possiamo comunque determinare le proporzioni del framset modificando questi valori in "frame.htm":
document.write('<frameset rows="89%,70" frameborder="NO" border="0" framespacing="0"> ')
Oppure possiamo personalizzare a piacere il frame basso modificando il codice html del documento "menu.htm"
L'importante è sapere che non vanno modificate queste due parti:
<script type="text/javascript" language="javascript">
//Half copyright Saibal - May 2002 - http://www.lorenzone.it
function costruisci(){
var text = top.window.location.search.substring(1);
document.write(text);
}
</script>
È la piccola funzione che prende l'url dalla barra degli indirizzi
<script type="text/javascript" language="javascript">
document.write("<a href="");
costruisci();
document.write("" target="_top"><strong>TOGLI IL FRAME</strong></a>");
</script>
Serve per "scrivere" il link "TOGLI IL FRAME"
Altre modifiche non sono richieste.