2009-01-29 20 views
10

Bu sayfada bir üst sayfa ve bir iframe var. Ebeveynteki bağlantılar iframe'e yüklenen sayfayı kontrol eder. Yapmak istediğim iframe yüklendiğinde ana sayfayı yenilemektir. Yukarıdaki kod sırayla ana sayfayı yeniden ve sonsuz bir döngüye girer içindeki iframe ile birlikte tüm ana sayfayı yeniler,Ebeveyn penceresini iframe'den nasıl yenileyebilirim?

RefreshParent(){ 
    parent.location.reload(); 
} 

<body onload="RefreshParent();"> 

Ama: ben iframe'de bu var.

+0

'parent.location.reload (;' benim için çalışmıyor. Konsolda "İzin Reddedildi" hatasını gösterir. Başka fikirlerin var mı? –

cevap

9

iframe'i yeniden yüklemeden üst sayfayı yenileyemezsiniz.

Yapabilecekleriniz, üst öğenin içeriğini güncellemek için AJAX kullanın, ancak bu makul miktarda iş olabilir (jQuery veya Prototype çerçevelerini kullanarak bunu kolaylaştırabilirsiniz).

1

Ebeveyn penceresini, içinde yer alan iframe dahil olmak üzere kendi sayfasının herhangi bir bölümünü yenileme ve hariç tutma konusunda söyleyemezsiniz. Ancak AJAX teknikleri kullanarak bunu yapabilirsiniz.

0

Sayfanın başka bir bölümünü yenilerken bunu korumak için iframe'inizin "normal" bir kare haline gelmesi gerekir. Iframe teknik olarak ebeveynin bir parçası olduğundan (sonuçta satır içi bir çerçeve), ebeveyni yenilemek iframe içeriğini de yeniden yükleyecektir.

0

Düzeninizin ne olduğuna bağlı olarak değişir, ancak diğer iletiler gözlemledikçe, sayfanın bir parçası olarak iframe'i yenilemeden üst çerçeveyi yenileyemezsiniz.

ajax ve layout izinlerini kullanmak istemezseniz, ana çerçevenin içeriğini iframe'in kendisine yerleştirmek bir çözümdür. Daha sonra, ana sayfanızın iframe yüklendiğinde 'ana içerik' içeren iframe'yi yenilemesini sağlayabilirsiniz. 'Ebeveyn' iframe'iniz kenarlıksızsa ve kaydırma yoksa, o zaman bu kullanıcı için şeffaftır.

Bu teknik, ana içeriğe yönelik birkaç iframe kadar itilebilir ve ajax uygulamasından daha hızlı ve daha basit bir şekilde gerçekleştirilebilir; bunun ötesinde, mermiyi ısırmak ve bir ajax çözümü uygulamaktan daha iyidir.

1

sürece senin gibi bir şey kullanabilirsiniz aynı etki alanında olduğu gibi:)

window.parent.location = window.parent.location + '?parent-updated=true' 
İlgili konular