2009-10-15 10 views
6

Comment obtenir un titre iframe src page puis définissez le titre principal de la pageobtenir un titre iframe page de javascript en utilisant jquery

+1

sont les pages dans un même domaine. Si ce n'est pas le cas, vous essayez de faire du Cross Site Scripting. Vous pouvez toujours le faire, mais vous devez définir Domaine dans la page que vous ouvrez dans le domaine –

+0

iframe est différent – ebattulga

Répondre

2

À moins que la page Web est dans le iframe est du même domaine que la page contenant, il est impossible.

Si elles ont le même domaine, essayez ce qui suit:

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

'contentDocument'. Sauf dans IE6-7, où vous devez revenir à la 'contentWindow.document' non standard. 'documentElement' est la balise html racine; la propriété 'title' est sur le HTMLDocument lui-même. Iframe.contentWindow.document – bobince

3

OCTROI que iframes src et le document parent src sont le même domaine:

document parent:

<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

renvoie null dans Chrome. – msbg

7

Si vous voulez le faire en utilisant jQuery:

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

Vous pouvez le faire que lorsque les pages sont sur le même domaine, sinon il est inutile.

1

Une façon vous pouvez partager le titre et le lieu:

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

et vous pouvez lire les paramètres à la page home.html.

0

Cela peut être fait en utilisant des écouteurs d'événement sur la page. Ce n'est pas particulièrement élégant, mais les navigateurs que j'ai essayé le supportent (IE9 +, Firefox, Chrome).

Dans votre page principale du site ajouter le javascript suivant:

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

Dans le iFrame, vous aurez alors besoin d'avoir le script suivant:

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 
Questions connexes