Un IFRAME es una ventana a otro sitio, digamos que con ella, creamos un agujero en nuestra página y alli mostramos el contenido de otra página, algo que está en otra parte y sobre lo cual, por supuesto, no tenemos control. Esta etiqueta tiene algunos atributos que pueden usarse y casi como todas, acepta estilos CSS pero, todo eso, sólo afecta al marco de la ventana en si misma y no a su contenido.
Por supuesto, como todas las demás, no es una etiqueta ni mala ni buena pero, un problema que ha surgido en los últimos tiempos es que hay sitios que incrustan otros y lo hacen con el solo propósito de aprovecharse de su contenido. Es sencillo; creo un sitio en cualquier servidor gratuito que me permita hacer una página web, lo rodeo de publicidad, le pongo mi nombre y adentro meto otro sitio. Negocio redondo. Hasta en el mismo Blogger puedo hacerse algo así. Por ejemplo, podría crear un blog y meter el contenido de otro. No será muy elegante pero estamos hablando de robos y la elegancia pasa a ser un elemento intrascendente.
Aunque no lo parezca, esto ya se está haciendo común así que lo que debmos hacer, sin caer en la paranoía, es protegernos.
La solución es simple y la vamos a ver en muchos sitios de la web donde se trata este tema; un script que dice algo así:
if (top.location != self.location) { top.location = self.location; }
y que lo que hace es redireccionar cualquier sitio que coloque un IFRAME con nuestra URL y lo envie de vuelta a casa, es decir a nuestra página.
En el caso de Blogger se nos complica un poquito ya que el mismo Blogger usa IFRAMES para, por ejemplo, su Editor de Plantillas así que si pusieramos esto directamente, no lograríamos entrar en la edición HTML de la plantilla a menos que lo hagamos rápido. Para evitar eso, tomo el script normal y le agrego un par de línes extras que verificarán si estamos dentro del dominio de blogger y si es así no hará nada.
Debemos poner el script al inicio de la plantilla para que el redireccionamiento sea inmediato así que buscamos <head> y debajo, agregamos esto (con cuidado y probando que todo funcione correctamente).
ACTUALIZADO PARA QUE FUNCIONE EN EL NUEVO DISEÑO DE BLOGGER
<script type='text/javascript'> //<![CDATA[ var laURL, blogger; laURL= window.location.href; blogger = laURL.indexOf("token="); if(blogger==-1) { if (top.location != self.location) { top.location = self.location; } } //]]> </script>
72 comentarios:
¡Funcionó! Muchas gracias amigo. :)
:O yo lo tengo en mi blog, lo vi en un tutorial de iframes :) y lo agrege, pero cuando usaba el editor de plantillas pasaba lo mismo y tenia que quitarlo para poder usarlo, pero ahora que veo este tendre que cambiarlo :D gracias
veo que tu ya lo tenias, lo supe hace poco donde quise comparar las velocidades de inicio y coloque tu blog y me direcciono aqui :D, enseguida lo renuevo xD
una forma de probar esto es buscando una imagen que tenga tu blog en google y listo ! si funciona ! saludos
.Sm4C. , no entiendo lo que dices
Es decir que cuando buscas una imagen en google con el buscador de imagenes, al dar click en ella se abre una ventana enseñandote la imagen previzualizada pero al aplicar este codigo ya no pasara eso, en su lugar se abrira directamente tu pagina porque sera redireccionado. A mi me pasa mucho con mi blog http://yugicelaya.blogspot.mx/ por ser de yugioh tiene muchas imagenes de cartas y demas
:D saludos
Estupendo truco, JMiur, muchas gracias. :D
¡Ups! :(
El truco impide la autocita en una ventanita de floatbox, con lo que la llamada a un texto anterior del propio bloc significa el salto a la página anterior cerrando la actual.
¿Crees que eso podría solventarse de alguna forma? Muchas gracias.
Saludos. :)
He visto este código y no le encontraba sentido, ahora con tu cambio es mucho mejor.
igualmente no es bueno ponerlo si estas vinculado a blog de directorios como el de Blogs con eñe y otros que muestran nuestro blog con iframe.
Otra cosa es ponerlo debajo de <head>, si utilizas el meta IE=EmulateIE7 o alguno parecido hay que ponerlo por debajo del mismo meta y no sobre el, ya que por lo que vi deja de funcionar.
Funciona bien, y lo que dice .Sm4C. también es verdad, al buscar imágenes en Google redireciona a la página.
Hola JMiur, ahora entiendo mejor esto de IFRAME. Casualmente coloqué uno en el sitio de los chicos y, si bien está bueno, me pareció innecesario porque podés enlazarlo y el resultado es el mismo. Pensé que debía tener alguna otra finalidad que no alcanzaba a comprender… nos pusimos a chequearlo y resultó imposible porque tiene miles de enlaces, así que ahí lo tengo sin saber muy bien qué tengo que hacer con él.
Pego el enlace para que lo mires y me digas si se acerca más o menos a lo que nos explicás, aunque en este caso es el sitio el que se ofrece para que lo usen: JueduLand –juegos educativos interactivos en línea-
No tener el control es lo que más me ha molestado. Me alegro de haber leído tu entrada. Saludos
Hola Jorge.
Funcionó perfectamente, mas quiero hacerte una pregunta que no tiene mucho que ver con el tema.
Resulta que en mi blog www.pasaralaunacional.com yo coloco las etiquetas en un elemento HTML, y por ejemplo, una etiqueta que uso se llama 'Ecaes'
Resulta que a la hora de querer enlazar la etiqueta yo escribo en el enlace .. /search/label/Ecaes?max-results=6
Pero cuando guardo y voy a ver, el enlace lo muestra como
... search/label/ecaes?max-results=6 (la 'e' del enlace la pone en minusculas) y por tanto, a lo hora de hacer click no se muestra nada.
(Me pasa con todas las etiquetas)
Se me ocurrio ir a Editar Entradas para ir reemplazando todas las etiquetas para que quedaran escritas en minusculas y no me dejaba, me salia el mensaje de que se habia aplicado la nueva etiqueta pero en realidad no se veia reflejado, y tambien dentro del widget, ingenuamente puse todo entre un div al que le puse estilo 'text-transform:none!important;' y naaa :)
¿Sabes a que se puede deber este asunto.?
Gracias por tu amable atención.
CHiCken: Sí. En este blog está implementado hace tiempo.
Josep: No tengo idea de si interferirá con determiandos scripts que usen iframes. Eso es algo que deberá reesolverse caso por caso y no sé si tiene solución. En el caso de FloatBox, lo desconozco porque no la usé salvo para un demo de una entrada y no me resultó nada sencillo de hacer :D
Vku: Si es bueno o no es bueno ponerlo es absolutamente subjetivo. En lo personal, los directorios que usan el contenido de un blog con iframe o copian entradas completas no me gustan en lo más mínimo.
No hay motivo para usar IE=EmulateIE7, a mi entender, los sitios deben ser realizado para utilzar el máximo de los navegadores y no a la inversa. Por el contrario, convendría que se utilizara la META:
<meta content='IE=8' http-equiv='X-UA-Compatible'/>
y dejar que sea el usuario el que configure su navegador en caso de tener problemas porque está usando una versión no actualizada.
Insisto. Por suerte, todo eso es subjetivo.
Bonzu: La aclaración es válida :D
Los peque de la BiBliO:
Un IFRAME es como un agujero en tu página donde puedes mostrar el contenido de otro sitio. No es ni malo ni bueno, depende de cada caso. Son muchos los usos comunes que por supuesto, están aceptados y hasta ofrecidos por los mismos administradores. Blogger los usa para muchas cosas.
No se tiene ningún control sobre eso que ves ya que es como una ventana a otra parte.
En el caso de lo explicado acá, se tratta de un problema que se me planteó respecto a un sitio que utilizaba el iframe de otro blog y de esa manera, lucraba con su contenido.
Felipe:
Alguien me preguntó alguna vez por un caso similar y no encontré respuestas. Las URLs no se ven afectadas por el CSS salvo que algún script las cambie. Como ves, acá utilizo etiquetas en minúsculas, mayusculas y combinadas sin problema así que no tengo la menor idea de por qué se produce algo así.
Si no fuera porque ya me lo mostraron antes te hubiera contestado: no puede ser :D y la verdad es que no puede ser, es muy pero muy raro.
Rarísimo.
No se como anden en otros blogs, pero tambien en el mio el widget de Ultimos Comentarios dejó de actualizarse.
Hize pruebas con tu blog y con el mio llamando los Feeds en formatos Atom, XML y con JSON y 'han quedado' estancados.
¿Será algo generalizado?
En Blogger Status no sale nada, pero en el Twitter de Blogger vi este:
"We've released a few fixes to our comment system this week. Please let us know if you still see unresolved issues. Thanks"
4:06 PM Jul 22nd via web
¿Será que nos darán mas flexibilidad para crear y moderar comentarios? :)
Sí. Es general. Acá está pasando lo mismo desde ayer o antes de ayer.
Ya al menos el detalle de los comentarios parace que se ha solucionado, y sobre lo de las etiquetas lo pude corregir pero entonces en vez de colocar todo el codigo html normal lo logré imprimir con java. Esperar a ver que todo ande bien un dia de estos.. :)
Me funciona y perfectamente, Gracias Jmiur.
Esta idea fue un gran descubrimiento todavía siguen agradeciendo, estoy pensando en ponerlo, ya veré.
De allí viene el post :-)
JMiur: Como siempre, ¡ un excelente aporte ! ( ideal para sitios como: http://www.123people.es ) Ya lo implementé en mi blog. ¡ Saludos !
Lo apliqué en mi blog y al cabo de una semana aumentó aproximadamente un 12% la cantidad de visitas. Sera debido a la aplicación?.
Creo que sí.
Otra vez gracias JMiur, :)
JMiur,he retirado momentaneamente el cript que comentas en esta entrada, ya que el nuevo diseño de blogger, estába generando un conflicto. Lo comprobé con dos plantillas distintas.
Exactamente se presenta cuando en draft.blogger desplegamos la lista (que se encuentra al lado de la casita) y elegimos el menú plantillas. Hace un direccionamiento y no permite ver tranquilamente las plantillas. (Por si alguno le pasa)
No hay problema. Eso se resuelve fácil ... creo :D
Ahí cambié el post para que el código del script contemple esa situación. Por lo que veo en mi plantilla, funciona bien pero, de todos modos, prueba.
Gracias JMiur; funciona bien con la modificación del script.
Perfecto, Roudy. Es bueno verificarlo.
hola Jmiur, ¿es posible poner ademas de el dominio de blogger otro dominio más es decir poner una página tuya que si quieres usar iframes de tu blog pero el rersto no?
Si es posible ¿como se pondría? Es decir marcar una excepción más.
Un salu2 y felicidades por tu blog, es el mejor sin lugar a dudas^^
No estoy seguro de entender pero, si se trata de poner otras excepciones, si. Bastaría poner las URLs del mismo modo; para decirlo así en general::
if(laURL=="la_excepcion") {
if (top.location != self.location) { top.location = self.location; }
}
Gracias Jmiu, es esactamente eso, una cosilla más solo bastaría poner el dominio raiz supongo no¿?
no lo consigo, como se pone la url¿?
Si se trata de páginas distintas dentro del mismo dominio, deberías hacer algo distnto y leer el dominio.
Esto, te indica la URL de la página:
laURL= window.location.href;
esto, devuelve -1 si la URL de esa página NO contiene la cadena de texto midominio.com
unavariable = laURL.indexOf("midominio.com");
Tendría que ver tu ejemplo concreto para ser más específico.
Hola jmiur gracias por contestar. El ejemplo concreto sería, por ejemplo en este post está la forma en la que pongo en iframe http://www.gnula.tv/drama/ver-ciudad-de-vida-y-muerte-2010-online/
y el iframe lo saco de aquí: http://gnuladata.blogspot.com/2011/07/i-hope-they-serve-beer-in-hell.html
Ya puestos, me gustaría preguntarte si es posible que el iframe redireccione al gominio gnula.tv en vez de al de blogger se puede¿? y
No he entendido nada de esto esto: te indica la URL de la página:
laURL= window.location.href;
esto, devuelve -1 si la URL de esa página NO contiene la cadena de texto midominio.com
unavariable = laURL.indexOf("midominio.com");
Osea Jmiur, me conformo con saber que es lo que tengo q sustituir en el código...
Gracias por tu ayuda
Los IFRAMES no puede ser modificados, Son sitios externos que se muestran pero sobre los que no se puede actuar.
En cuanto al script, no puedo darte un detalle exacto porque para hacer eso, hay que ver, probar, verificar. Sólo puedo darte la idea general.
Gracias JMiur me funciono correctamente. Nuevamente gracias. :D
Perfecto, me alegra que funcionara.
muchisimas gracias, funciono perfectamente xD
Hola, he estado navegando en la web para solucionar mi problema, he posteado en foros y comunidades y nadie sabe como responderme.
Mi problema es que tengo un sitio joomla! que tiene ese comportamiento, necesito quitar esa redirección para poder llamar desde un iframe al directorio administrator/index.php.
Si alguien sabe le agradecería muchísimo que me diga en que archivo existe esa función.
Desde ya muchas gracias.
Desconozco la forma en que tienes armado el sitio pero, el script puede ser colcoado en cualquier aprte del head del tema que estés usndo.
Llegado el caso, también puedes bloquear al sitio usando el panel de control de tu hosting o modificando el archivo .htaccess
Muy buenas:
a ver si me aclaro no toco nada del script o meto mi url en algun sitio.
saludos y gracias
No es necesario modificar el script; basta colocarlo así como está.
y si me copian por ejemplo una revista del calameo y sacan el iframe y lo ponen en su web automaticamente me lo redirecionan a mi, oes solamente para quiern copiar la web entera y hacer un iframe,perdon por las preguntas pero es que no me quedo muy claro el tema y claro no me paran de copiar los iframes de mis revistas subidas a calameo.
saludos y muchiiisimas gracias por hacernos la vida mas facil
Si estás agregando revistas en ese sitio que imagino que es:
http://es.calameo.com/
cualquier persona puede compartirlos porque, justamente, el sitio es para eso.
ty ty master :D
this is happen to me too ;)
Muchas gracias por el aporte realmente me sirvio de mucho y ya lo implemente en mi blog ;)
No lo entiendo. No encuentro ese script por ningún lado, ni expandiendo artilugios, ni ctrl+F, ni escribiendo solo algunas letras, ni nada. Estoy tan desesperado que he incorporado el script modificado para ver si habian resultado y ni con esas. Lo que mas me duele es que a nadie mas le pasa! :(
Mi blog: http://howtodressright.blogspot.com/
Alguna sugerencia? Gracias de antemano.
¿Qué script no encuentras? El que se muestra en esta entrada debe ser agregado manualmente.
Este es el script que no encuentro: "if (top.location != self.location) { top.location = self.location; }"
El que se muestra en la entrada lo agregué manualmente pero me sigue dando problemas. No puedo acceder de una manera normal a mi plantilla o crear entradas.
Saludos y gracias.
Pd: soy el mismo autor del comentario anterior con un blog nuevo. Como ves, sigo sin poder modificar nada, aún teniendo un blog nuevo.
Como dije, ese script se agrega manualmente.
No veo problema alguno en el script y está agregado en este blog. Puedes verlo en el código fuente.
Está visto que debo ser el único ser terrestre con este problema. He mirado en cientos de blogs diciendo lo mismo y este era el único que proponia una alternativa.
El script lo agregué manualmente a mi template, pero no noto cambio ninguno. El único cambió que noté fue que pude acceder a la plantilla o a la creación de entradas cuando limpié caché y cookies pero al cabo de unos minutos volvió a pasar lo mismo.
Soy insuperable!
Gracias igualmente por la ayuda.
Saludos.
Sin ver dónde lo has puesto, es imposible decirte nada.
Hola, he colocado el script pero no he notado ningún cambio.
Te adjunto captura de mi plantilla HTML donde he colocado el script por si pudiera aclararte algo.
https://www.box.com/s/0fp0l7207cwsey9elohg
Gracias por tu ayuda.
´No se cual es tu blog. Tendría que verlo online.
Mi blog es:
dailywallpaper.blogspot.com
Probablemente, porque la direccióm de ese blog varía según el prefijo del pais:
http://vagabundia.blogspot.com/2012/03/blogger-y-las-nuevas-redirecciones-de.html
Hola, he probado a colocar el script de redireccionamiento justo debajo de head y luego el de los iframes. El primero sí funciona pero el segundo sigue sin funcionar. ¿Alguna sugerencia?
Gracias de nuevo.
¿Dónde ves el problema? He colocado un post en un blog de pruebas con un iframe a tu sitio:
http://jmiur.blogspot.com/2013/03/iframe.html
y se redirige normalmente al blog original.
Me refiero a que cuando busco en Google Imagenes, por ej: "maria valverde daily wallpaper" y aparece alguno de las imágenes de mi blog, al hacer clic en la imagen y luego en "Ver imagen original" el navegador abre la imagen en lugar de redirigir a la página mi blog donde aparece la imagen.
Lo que muestra Google es la imagen en si misma y no un iframe de tu blog; las imágenes son indexadas y poseen direcciones variables; nada impide eso, el script no contempla semejante cosa ni hay forma alguna de evitarlo.
Lo que puedes hacer y no recomiendo, es impedir que sean indexadas:
http://support.google.com/webmasters/bin/answer.py?hl=en&answer=35308
aunque, no siendo parte del dominio sino de otro dominio (Picasa o el servidor que uses) dudo que funcione.
Tenia el código actualizado de este post añadido a mi plantilla (copiado y pegado) al editar un post y dar vista previa, se perdía la vista previa y me mandaba directamente al blog. Vi el código fuente de Vagabundia copié y pegué en mi plantilla el código:
<!-- <script type='text/javascript'> //<![CDATA[ var laURL, blogger; laURL= window.location.href; blogger = laURL.indexOf("token="); if(blogger==-1) { if (top.location != self.location) { top.location = self.location; } } //]]> </script> -->
Y funcionó, se mantuvo en vista previa, el código es el mismo que el del post, la única diferencia que veo es que se encuentra sin espacios. Utilicé el navegador Firefox y Chrome y en ambos pasa lo mismo con el código tal cual esta en este post.
Hace ya mucho que no uso ese script. Si te fijas en el código que has copiado, empieza con
<!-- y termina con --> lo que implica que esta comentado y por lo tanto no se activa.
Desconozco si sigue funcionando o no con los cambios que ha hecho Blogger en estos últimos tiempos.
Saludos JMiur
Si habra forma de condicionar una pagina para que solo puedad ser vista e incrustada via iframe en otra determinada pagina exclusivamente,
o por lo menos incrustada...
esto ya lo he visto pero con reproductores streaming
Gracias de antemano
Usando lenguajes como PHP si, usando JavaScript, tendrías que probar las respuestas que te da el script y chequear las tres variables posibles:
window.location.href
top.location.href
self.location.href
ver los resultados que da e ir estableciendo las condiciones.
Es algo que excede en mucho las posibilidades de respuestas rápidas; en principio; en un página "normal", esos tres valores son iguales y difieren cuando se carga esa página en un iframe indicando cuál es la página donde está el iframe..
Disculpa las molestias, se que esta entrada es antigua, pero me interesa poner esto para poder controlar y saber que si se va a ver parte de mi blog sea porque así lo quiero yo y no porque se aprovechan de lo que yo hice, el problema que tengo es que no entiendo como poner otra "excepción" este es el blog en el que lo estoy probando: http://mispruebasenblogger.blogspot.com/
Seguramente el error es simple de resolver pero después de dos horas no consigo que me deje usar las banderitas de traducción que están arriba a la izquierda, si puedo usar el traductor de google porque no abre otra pestaña para mostrar la traducción.
Desde ya muchas gracias JMiur.
Veo tu código y sugeriría algo así para pra probar:
var laURL, blogger, traduc;
laURL= window.location.href;
blogger = laURL.indexOf("token=");
traduc= laURL.indexOf("://translate.googleusercontent.com/translate_c");
if(blogger==-1 && traduc==-1) {
if (top.location != self.location) { top.location = self.location; }
}
Así como la variable blogger será un número positivo si se encuentra "token=" dentro de ella, la variable traducserá un número positivo si se encuentra "://translate.googleusercontent.com/translate_c"
Luego, el script sólo se ejecuta si no ambas son -1 o sea, si no es ni una ni otra
if(blogger==-1 && traduc==-1) { .....
Eso entre "" resuelve el problema, no satisface el tiempo de carga que lleva. Muchas gracias por tu respuesta, disculpa la demora. Ahora una consulta especifica a mi problema, ¿hay forma de obtener la url de la barra de navegación?, ya que si quito la redirección, dejando solo:
var laURL=window.location.href;
y agrego:
alert(laURL)
Todo esto en el formato que estaba, es decir entre etiquetas SCRIPT colocando mi blog en un iframe me sigue saliendo la dirección de mi blog y no la del iframe por lo cual no puedo realizar la comparación que necesito para permitir a esa otra página mostrar la mia!!! Espero se entienda :)
No, no esta muy claro pero imagino qu lo que que buscas es saber cual es la url del sitio que ha colocado el iframe; ese dato es:
top.location
que será igual a window.location.href (o self.location) si no está en un iframe y distinto si lo está
Mil gracias, aunque no logre lo que quería, le encontré una solución. Comprobé lo que dices en un iframe propio y si funciona! al parecer la página de intercambio de tráfico en la que quiero poner mi blog en si no debe usar iframe ya que siempre me muestra mi dirección aunque el script hace la re-dirección igual y en verdad desde ella no puedo obtener el location ni el self, aunque no son iguales sino el scrip pasaría por alto el re-direccionar y no lo hace. Leeré mas sobre java a ver si lo resuelvo. De vuelta mil gracias por tu tiempo!!! Un saludo enorme!
JMiur mi problema es que en esta pagina de mi blog http://enverdece.blogspot.mx/p/blog.html tengo incrustado un canal en vivo por medio de iframe, se reproduce actuamaticamente, pero cuando yo entro a la pagina principal o cualquiera que no sea donde lo incruste reproduce el audio pero no se ve por que tengo ese gadget para que solo sea visible ahi, lo que quiero es que solo se reproduzca en esta dirección http://enverdece.blogspot.mx/p/blog.html y no en todas las demás, como le hago?
Gracias!
Sería más simple si en lugar de usar gadgets colocaras esos elementos dentro de las entradas pero, de todos modos, puedes condicionar el contenido de cualquier gadget, editándolo tal como indica esta entrada
La condición sería algo así:
<b:if cond='data:blog.url == "http://enverdece.blogspot.mx/p/blog.html"'>
.... aca va el iframe ....
</b:if>
Hola JMiur,
Estoy viendo el tema de iframe y no entiendo muy bien el código.
tengo mi web en php y yo tengo algunos efectos modales o pop up y quisiera saber como hacer excepciones para esas ventanas ya que si copio el código directo se rompe y se habré en otra ventana me podrían ayudar
Dependerá de cada caso. Una forma es evaluar los dominios aceptados del mismo modo que en el ejemplo se evita que funcione en blogger, buscando una palabra en la dirección:
blogger = laURL.indexOf("token=");
puede ser cualquier otra palabra que identifique al dominio aceptado.
¿Quiere dejar un comentario?
recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...
Nota: sólo los miembros de este blog pueden publicar comentarios.
Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.
Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...