2009-10-02 11 views
7

Bu yüzden, bir iFrame'i aynı etki alanında olmayan bir sayfaya eklersem, tarayıcının politikası aracılığıyla bu IFrame'in DOM'sine erişemiyorum, ancak iframe içindeki bir sayfa, herhangi bir üst belgeye erişmeyi başarabilir mi? Gömülü sayfa o ana penceresi olmadığını söylersenizSayfalar iframe edildiklerini söyler mi?

  1. , tek un-iframe-muktedir yüzden, ya siteleri yapabiliriz:

    Özellikle bu soru üzerine şarta fikirlere sahip eğer sayfa algılanırsa, bir "Go Away" sayfasına dönüşürse VEYA sadece iframe-yapabilir (sadece içerdiği anlamına gelen sayfalar için sunucu taraflı bir betiğe benzer), yani iframe edilmediğinde sayfa "Go Away" sayfası alırdı.

  2. iframe sayfanın ana pencerenin sahip olmadığı belirli bir özgürlüğü varsa, üst pencerenin stil sayfasını isteyebilir ve onu stil sayfasında belirleyebilir, böylece sitenin ana belge ile daha fazla bütünleşmesini sağlayabilir. (Tabii ki, daha sonra stil sayfamı iframe siteye daha fazla bağlayabilirim, bunu yapacağını bildiğimden, ama bunu bir sorun olarak görmüyorum).

Herkes biliyor mu? 1. evet, söyleyebilir ile ilgili olarak

cevap

11

bazı basit javascript kullanarak iftiraya uğradı eğer: # 2 İlişkin

<script type="text/javascript"> 
if (self != top) 
{ 
    // Framed! 
} 
</script> 

, sana "top" kullanarak neler yapabileceğini emin değilim değişkeni, ancak konumunuzu değiştirebileceğinizi biliyorum (bu yüzden siteniz başka bir site tarafından çerçevelenmişse, çerçevenizin üst çerçevenin konumunu değiştirmesini sağlayabilirsiniz - kullanıcıyı doğrudan sitenize yönlendirebilirsiniz).

Üst çerçeveye başka ne yapabileceğiniz veya yapamayacağınızdan emin değilsiniz - başka biri daha fazla bilgi sağlayabilir. Site şablonu bir parçası olarak bu Javascript'i ve

+2

, orada Netscape 2 için daha fazla ikram yok. – Quentin

+0

@David - tamam, güzel, eski alışkanlıklar zor ölür :) –

1

Bu sayfa JavaScript aşağıdaki katıştırma ile mümkündür Bu daha önce ve işe yaradı etti:

<script type="text/javascript"> 
if (window.parent != null) 
{ 
    // Framed! 
} 
</script> 
0

Yaptığım IFrame görüntülenmesini herhangi bir sayfa önleyebilir

if(top.location.href != self.location){ 
//do redirection or display message 
} 

:

4

Ayrıca kısımların belirlenmesi konusunda this Coding Horror article ilginizi çekebilir. Çerçevelenmiş olup olmadığını tespit edebilirsiniz, ancak "ebeveyn" sayfasının bunun üzerinde hareket etmenizi önlemek için yapabileceği önlemler de vardır. makalesinden Örnek:

sana tuzak edilip edilmediğini Algılama:

if (parent.frames.length > 0) { 
    top.location.replace(document.location); 
} 

önle'yi çerçeveyi tespit ve yönlendirmesini: Senaryonun öğesi içine HTML yorumlarını terkediyor önermek

var prevent_bust = 0 
    window.onbeforeunload = function() { prevent_bust++ } 
    setInterval(function() { 
    if (prevent_bust > 0) { 
     prevent_bust -= 2 
     window.top.location = 'http://server-which-responds-with-204.com' 
    } 
    }, 1) 
+2

Eski mesaj ancak bir gözlem ekleyeceğini düşündüm.Iframe'in "busting" ini önleyebilmenize rağmen, "Bu sayfa kaçırıldı. Bu sayfayı gerçek sitede ziyaret etmiyorsunuz gibi iframing algılandığında, sayfanızın içeriğini istediğiniz zaman değiştirebilirsiniz." makaleyi okumak için lütfen xyz.com/... adresini ziyaret edin. " – Endophage