2009-10-15 53 views
6

Como llegar iframe src título de la página y luego establecer título principal páginaobtener título de la página de iframe javascript usando jQuery

+1

son las páginas en el mismo dominio. Si no es eso, significa que intenta hacer Cross Site Scripting. Todavía puede hacer eso, pero necesita establecer el dominio en la página que está abriendo en iframe –

+0

, el dominio es diferente – ebattulga

Respuesta

2

A menos que la página web se encuentra en el marco flotante es del mismo dominio que la página que contiene, es imposible.

Si tienen el mismo dominio, a continuación, intente lo siguiente:

document.title = document.getElementById("iframe").documentElement.title; 
+1

'contentDocument'. Excepto en IE6-7, donde debe recurrir al 'contentWindow.document' no estándar. 'documentElement' es la etiqueta html de la raíz; la propiedad 'title' está en el HTMLDocument mismo. – bobince

3

concediendo que iframes src y el src documento de nivel superior son el mismo dominio:

documento de nivel superior:

<html> 
<head><title>Parent</title> 
<body> 
    <iframe id="f" src="someurl.html"></iframe> 
    <script> 
     //if the parent should set the title, here it is 
     document.title = document.getElementById('f').contentWindow.document.title; 
    </script> 
</body> 
</html> 

someurl.html:

<html> 
<head><title>Child</title> 
<body> 
    <script> 
     //if the child wants to set the parent title, here it is 
     parent.document.title = document.title; 
     //or top.document.title = document.title; 

    </script> 
</body> 
</html> 
+1

iframe.contentWindow.document devuelve null en Chrome. – msbg

7

Si quieren hacerlo usando jQuery:

var title = $("#frame_id").contents().find("title").html(); 
$(document).find("title").html(title); 

Puede hacerlo sólo cuando las páginas están en el mismo dominio, de lo contrario es inútil.

1

Una manera de compartir el título y la ubicación:

document.write('<iframe src="http://www.yourwebsite.com/home.html?title='+document.title+'&url='+window.location+'" frameborder="0" scrolling="no"></iframe>'); 

y luego se puede leer los parámetros en la página home.html.

0

Esto se puede hacer utilizando los detectores de eventos en la página. No es particularmente elegante, pero los navegadores con los que lo he probado lo soportan (por ejemplo, IE9 +, Firefox, Chrome).

En su página principal sitio de añadir el siguiente javascript:

function setPageTitle(event) { 
    var newPageTitle = event.data 
    // your code for setting the page title and anything else you're doing 
} 
addEventListener('message', setPageTitle, false); 

En el marco flotante, usted entonces necesita tener la siguiente secuencia de comandos:

var targetOrigin = "http://your.domain.com"; // needed to let the browser think the message came from your actual domain 
parent.postMessage("New page title", targetOrigin); // this will trigger the message listener in the parent window 
Cuestiones relacionadas