2009-10-15 16 views
6

Wie iframe src Seitentitel bekommen und dann setzen Hauptseite Titeliframe Seitentitel von Javascript bekommen jquery mit

+1

die Seiten in derselben Domäne befinden. Wenn dies nicht der Fall ist, müssen Sie Cross Site Scripting durchführen. Sie können das immer noch tun, aber Sie müssen Domain auf der Seite setzen, die Sie in iframe öffnen –

+0

Domain ist anders – ebattulga

Antwort

2

Es sei denn, die Webseite ist in der iframe aus der gleichen Domäne wie die beinhaltende Seite ist, ist es unmöglich.

Wenn sie die gleiche Domain zu tun haben, dann versuchen Sie folgendes:

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

'contentDocument'. Außer in IE6-7, wo Sie auf das nicht standardmäßige contentWindow.document zurückgreifen müssen. 'documentElement' ist das Stamm-HTML-Tag; Die 'title' -Eigenschaft befindet sich im HTMLDocument selbst. – bobince

3

Gewähren, dass iframes src und das übergeordnete Dokument src der gleichen Domäne sind:

Geordnetes Dokument:

<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 gibt in Chrome null zurück. – msbg

7

Wenn Sie es mit jQuery zu tun:

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

Sie es nur tun können, wenn Seiten auf der gleichen Domäne sind, sonst nutzlos es ist.

1

Ein Weg, können Sie Titel und Ort teilen:

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

und dann können Sie die Parameter auf home.html Seite lesen.

0

Dies kann mithilfe von Ereignis-Listener auf der Seite erfolgen. Es ist nicht besonders elegant, aber die Browser habe ich es mit Unterstützung ausprobiert (also IE9 +, Firefox, Chrome).

In Ihrer Haupt-Website-Seite die folgenden 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); 

Im iFrame, werden Sie dann müssen Sie das folgende Skript haben:

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