2010-03-24 17 views
5

iframe sayfama erişmek istiyorum sayfam içeride ve yeniden boyutlandırmak. Bu arada javascript içinde yapıyorum. İç sayfadaki bir iframe nasıl yeniden boyutlandırılır?

It's something like parent and height or offsetHeight.

<iframe src="mypage.asp" height="400" width="400" ></iframe> 

Ve sayfam.asp içinde

böyle benzer sth yapın:

var h = // new height; 
parent.height = h; 

Ama hepsi doğru değil mi? Daha fazlasını bilen başkası mı?

cevap

4

iframe'i iframe'inize yüklenen sayfadan yeniden boyutlandırmak istiyorsanız bunu deneyin. En azından yerel olarak iş gibi görünüyor:

function doIt() { 
    var elem = window.parent.document.getElementById('myIframe'); // the id of your iframe of course 
    elem.style.height = '40em'; 
} 

seninkini ve aynı "köken" sahip sayfanızı ve iframe hem varsayalım.

+0

yeniden boyutlandırma aslında sadece elem.height veya elem.width olduğunu. – poo

+0

Öğenin 'height' özniteliğinin aslında desteklenmediğini düşünüyorum (en az xhtml'de). Bu konuda da biraz onay arayacaksın. Her neyse, stili CSS kuralları ile yapmayı tercih ediyorum, bu yüzden bunları manipüle ediyorum. – npup

+0

Bazı durumlarda, satır içi stillere yazmak yerine bir css sınıfı eklemek daha mantıklıdır. Sanırım "dinamik" kişinin ne kadar yükseklikte olmasını istiyor. – npup

2

Bunu window.postMessage kullanarak çözerim. Bu iframe'den iframe içeren ana sayfaya bir mesaj gönderir. Ardından ebeveynteki yüksekliği güncelleyebilirsiniz. Iframe içinden yüksekliği ayarlamaya çalışmak gerçekten kötü bir tarayıcı XSS ​​önleme sınırlamaları verir.

güzel örnek here geçerli:

veli:

// Every two seconds.... 
setInterval(function() { 
    // Send the message "Hello" to the parent window 
    // ...if the domain is still "davidwalsh.name" 
    parent.postMessage("Hello","http://davidwalsh.name"); 
},1000); 

iframe:

// Create IE + others compatible event handler 
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; 
var eventer = window[eventMethod]; 
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; 

// Listen to message from child window 
eventer(messageEvent,function(e) { 
    console.log('parent received message!: ',e.data); 
},false); 
+0

Awesome, bu çok iyi çalışıyor ve bende çok tarayıcı uyumlu olduğunu fark ettim. . –

İlgili konular