2013-03-29 11 views
24

Mam ten kod iframe:Załaduj linki iframe do okna nadrzędnego?

<iframe src="http://www.example.com" border="0" framespacing="0" marginheight="0" marginwidth="0" vspace="0" hspace="0" scrolling="yes" width="100%" frameborder="0" height="100%"></iframe> 

co usiłuję zrobić is..when kliknięciu dowolnego łącza w iframe page..then pójdę do niego, a strona będzie ładować i będę getout z bieżącej strony do odnośnika iframe jako nowej strony.

Coś takiego jak target="_self" - nie tak jak normalny element iframe, który przejdzie do tego łącza bez żadnych zmian w samej przeglądarce.

Przykład: iframe src: http://www.w3schools.com

Po kliknięciu "Learn HTML" wewnątrz iframe page..then pójdę do http://www.w3schools.com/html/default.asp i mój URL przeglądarka będzie też zmienić do niego.

Po prostu kliknąłem link wewnątrz iframe i do niego podszedłem.

Wszelkie pomysły?

Odpowiedz

35

Tak, aby to osiągnąć, można użyć target="_parent".

"target =" _ parent "otwiera połączony dokument w ramce nadrzędnej."

Przykład:

<a target="_parent" href="http://example.org">Click me!</a> 

Edit:

Jeśli to nie działa, można spróbować _top:

<a target="_top" href="http://example.org">Click me!</a> 

Albo base target:

<base target="_parent" /> 

Albo window.top.location w JavaScript:

window.top.location = "http://example.com"; 
+0

Q został updated..thank Ciebie. – user2203703

+0

@ user2203703 Nie rozumiem, to odpowiada na pytanie. używasz target parent dla odnośnika wewnątrz iframe .. – lifetimes

+0

Chcę zostawić moją stronę, która ma iframe i przejść do linku, który kliknąłem wewnątrz iframe – user2203703

13

Czego szukasz <a href="..." target="_parent">

_parent spowoduje to, aby przejść do ramki nadrzędnej

_top spowoduje, że osiągnie najwyższy poziom.

Albo _parent lub _top powinno działać dla twojego celu.

+1

Może nie jestem jednoznaczny na pytanie. Strona w elemencie iframe ... czy masz kontrolę nad kodem HTML na tej stronie, czy też jest to strona trzecia? Zaktualizowałem swoją odpowiedź, aby uwzględnić target = _top, ale oczywiście zakładam, że masz kontrolę nad zawartością ramki. –

5

Tak, wystarczy dodać target="_parent" do linku i załadować na stronie głównej.

+0

Q został zaktualizowany..dziękuję. – user2203703

6

Możesz użyć javascript, aby dynamicznie dodać cel do linków, coś w tym stylu.

function onLoadIF(frame) 
{ 
    var elements = frame.getElementsByTagName('a'), 
     len = elements.length; 

    while(len--) { 
     elements[len].target = "_parent"; 
    } 
} 

a następnie dodać onload = "onLoadIF (this)" do iframe.

1

Jeśli strona otwiera się w iframe następnie przekierowanie na stronę główną

<script> 
    if (window.top.location != window.self.location) { 
     top.window.location.href = window.self.location; 
    } 
</script> 
+0

To hack i nawet nie odpowiada na pytanie. –

Powiązane problemy