Alcuni simpaticoni – più o meno in buona fede – si divertono a inserire i siti di terzi all’interno di strutture di frame o di iframe. Come al solito, se la cosa vi infastidisce, consiglio sempre di passare prima per la strada educata e rispettosa, componendo una gentile email di richiesta di rimozione.
Se però non si ottengono risposte, o peggio risposte maleducate, si può fare una cosa altrettanto simpatica, ovvero tramite un semplice script decidere di comportarsi in modo non usuale col proprio sito.
Possiamo quindi – verificando che il sito non è nel “proprio posto” – inoltrare l’utente in qualche divertente o “eccitante” sito, oppure di sbalzare il nostro sito direttamente a tutto browser, saltando a piè pari la struttura del “chiamante”.
Farlo è abbastanza banale. Per identificare se il nostro sito è contenuto in un frame basta verificare che la pagina “viva” nella finestra principale di navigazione, chiamata top. Se non è così allora si fa qualcosa. Ecco come rintracciare il “se”:
<script type="text/javascript"> var isInIFrame = (window.location != window.parent.location) ? true : false; </script>
Se volete fare in modo che il vostro sito diventi il sito principale lo si carica in “top” così:
<script type="text/javascript"> var isInIFrame = (window.location != window.parent.location) ? true : false; if (isInIFrame){ window.top.location = window.location; } </script>
Se volete sparare in top un altro sito al posto di window.location potete mettere un “http://www.ilsitochetivadimettere.eccolo“.
Se ancora volete comportamenti diversi in merito all’url del sito possiamo ottenere un gioco simpatico con l’indexOf():
<script type="text/javascript"> var isInIFrame = (window.location != window.parent.location) ? true : false;</script> if (isInIFrame){ if (window.top.location.indexOf("http://www.ilsitochemiospita.bravo") >= 0){ window.top.location = window.location; }else{ window.top.location = "http://www.guardadovetimandoora.qua"; } } </script>
Tutto chiaro?
Grazie sceriffo 🙂
Un sola modifica per chi come me non conosce il java: scrivere in file txt quando isInFrame è true
Grazie 🙂
@Gregorio: salvare in un file txt è un’operazione che solo un linguaggio server side può fare (php, asp, jps, cfm, …). Sicuramente non è possibile farlo in javascript. Come soluzioni ce ne potrebbero essere un paio valide:
– nel caso di iframe, prima di cambiare la location, richiami la funzione di Google Analytics e ti registri l’evento: http://goo.gl/gXHZh
– la pagina che ricarichi la personalizzi passando un parametro in query string (cioè nell’url) e nel tuo sito tratti quel parametro registrando lato server dove vuoi.
– WPch: http://www.google.com/support/forum/p/webmasters/thread?tid=2ce9ad9d64745bb7&hl=it e altri vari casi che si vedono in giro. Ma anche qualcuno a cui dia fastidio essere inglobato in oknotizie o simili.
Simpatico script, ma chi avrebbe interesse a mettere un altro sito in un frame al posto di un proprio sito? Non capisco la logica iniziale e mi hai incuriosito! ^_^
Grazie
Ottimo grazie mille:)