2010-12-13 25 views
5

Bir siteye "tweet this" düğmesi eklemek istiyorum. Yeterince basit, değil mi? Yakalama, sitenin özellikle açılır pencereleri işlemeyen gömülü bir platformda çalışması anlamına geliyor, bu yüzden sayfanın içindeki her şeyi yapmaya çalışıyorum.Yeni bir pencere açmadan tweet düğmesi oluşturma

Tweet düğümü başarıyla oluşturabilir, bir onClick işleyicisini ekleyebilir ve ilgili içerik için uygun bir twitter.com/share URL oluşturabilirim. Window.open ile yeni bir pencerede bu URL'yi açtığımda tüm iyi çalışır. Ancak, URL'yi iframe'de açmaya çalışırsam, çerçevenin içinde hiçbir şey yüklenmez. http://twitter.com'u iframe içine yüklemek bile aynı şekilde başarısız olur. Ancak, Google veya başka bir web sitesi yüklemek iyi çalışıyor gibi görünüyor.

Burada neleri kaçırdığım hakkında bir fikrin var mı? Teşekkürler! --zach

Düzenleme: Evet, onlar yükte iframe tespit ve sayfayı körleme gibidir:

if (window.top !== window.self) { 
    document.write = ""; 
    window.top.location = window.self.location; 
    setTimeout(function(){ document.body.innerHTML='';},1); 
    window.self.onload=function(evt){document.body.innerHTML='';}; 

}

Bunu çözmek için herhangi bir makul yolu, ya da ben sıkışmış duyuyorum Outh yoluyla kendi auth boru hattımı yazmak mı? API'larından herhangi bir şeye ihtiyacım yok, sadece kullanıcıların kendi hesaplarına tweet atmasına izin veriyorum.

cevap

10

Heyecan muhtemelen bir iFrame sunulmadan değiliz sağlamak için bazı JavaScript kullanıyor (yığın taşması gibi):

if(top!=self){ 
    //hates you 
} 
Geçenlerde benzer bir şey yapıyorduk, bir kısmını yeniden yapmak sona erdi

benim iFrame elemanı olmadan uygulama.

+3

+ 1'den nefret etmek için !! –

1

Sadece twitter paylaşım URL'sini yeniden yönlendirebilir misiniz? Kullanıcıların bu tweet'i gönderme niyetini ilk önce doğrulama şansı vermeden, kötü niyetli sitelerin bir kullanıcının hesabına tweet atmasını engellemek için iframe'deki pencereyi açma konusunda dikkatli olmak istediklerini tahmin ediyorum.

2

Git ve heyecan ve şeyler üzerinde bir developper hesabı almak sizin için çok daha kolay :)

0

Sen window.open yeni bir pencerede url gelmeyip için iyi çalıştı ama ebeveyn içine haşhaş çalıştı var dedi çerçeveye?

twtWindow=window.open([url],'_parent',[specs]) 
0

@yuval Senin için üzgünüm twitter url X-FRAME-SEÇENEKLER'e içeren bir sayfaya gider: yanıt olarak ayarlanmış SAMEORIGIN başlığını. Javascript kontrolü değil. Tarayıcı sadece başlığı gördükten sonra sayfayı oluşturmayı reddeder. Bu genellikle bir kullanıcının şifresini çalmak için yapılan bir clickjacking saldırısını önlemek için yapılır.

Diğer tek seçeneğiniz, geçerli sayfanızı gerçekten window.location.href=url ile yeniden yönlendirmektir.