2013-01-24 16 views
5

Tarayıcı penceresinin içeriğini (_top frame), iframe yüklü belgeyle değiştirmek, bu belgeyi yüklemek için yeni bir GET yayınlamaksızın mümkün mü? Böyle_top penceresinin içeriğini, yeniden yükleme yapmadan iframe içeriğiyle değiştirin.

şey:

<html> 
<head> 
<script type="text/javascript" language="JavaScript"> 
$(document).ready(function() { 
    $("#link").click(function() { 
    // should present in the browser window the content of the iframe WITHOUT reload 
    // even preserve javascript/head code 
    $(document).html($("#frameDestination").html()); 
    }); 
}); 
</script> 
</head> 
<body> 
<a id="link" href="#">full window</a> 
<iframe id="frameDestination" src="http://www.some-random-site.com" width="900px" height="500px"></iframe> 
</body> 
</html> 
+0

Sorunu doğru bir şekilde anladığımızdan emin olalım: Bağlantı etiketi ve iframe içeren bir sayfanız var. Bağlantı etiketini tıklattığınızda, tüm sayfanın iframe'de olanı olmasını istersiniz (herhangi bir HTTP isteği yapmadan)? – jbabey

+0

Bunun mümkün olacağını düşünemiyorum. Iframe'in tüm tarayıcı penceresini kapsayacak şekilde yeniden konumlandırması mümkün olabilir, ancak yine de orijinal sayfa içinde yuvalanmış olur. – Blazemonger

+0

@jbabey Tam olarak! Sayfanın tarayıcının adres çubuğundaki URL’yi yazarak yeni yüklenmiş gibi taklit etmek istiyorum. Sunucuya, halihazırda iframe yüklü olduğundan aynı HTML belgesini soran yeni bir gidiş dönüş istemiyorum. –

cevap

1

Kullanım içerikleri() jQuery bir iframe ile çalışırken.

$("#YourIframe").contents().find("html").html(); 

Bu yalnızcaiframe ebeveyn olarak aynı etki ise işe olduğunu.

1

Ben alanlar arası test etmedim ama aynı etki alanında bu komut çalışma var: Firefox son olarak

$(document).ready(function() { 
    $("#link").click(function() { 
    var iframeBody = document.getElementById("frameDestination").contentDocument, 
    head = iframeBody['head'].innerHTML, 
    body = iframeBody['body'].innerHTML; 
    $('body').html(body); 
    $('head').html(head); 
    }); 
}); 

, ben bir komut dosyası etiketinde bir değişkeni ayarlamak için bile açabiliyorum çerçeve ve bağlantıyı tıkladıktan sonra bu değeri _top değerine bakın.

+0

Teşekkürler @Gitninja! Aynı etki alanı için bir çekicilik gibi çalışır, ancak sadece farklı bir etki alanıyla test etti ve çalışmaz (FF ve Chrome). –

+0

iframe src'nin javascript ile ayarlanmış olması durumunda, etki alanı kısıtlamasının geçerli olmadığını, ancak henüz test yapmadığımı okudum. Durumunuzda javascript kullanarak iframe etiketini dinamik olarak oluşturabiliyor musunuz? – Rustavore

+0

@Gitnija: Şununla çalışmıyor: "var ifrm = document.createElement (" IFRAME "); ifrm.setAttribute ("src", "http://www.somesite.com"); ifrm.setAttribute ("id", "frameDestination"); ifrm.style.width = 1200+ "px"; ifrm.style.height = 500+ "px"; document.body.appendChild (ifrm); –

İlgili konular