2010-12-13 17 views
5

Sto cercando di aggiungere un pulsante "tweet this" a un sito. Abbastanza semplice, giusto? Il problema è che il sito è pensato per funzionare su una piattaforma embedded che non gestisce in particolare finestre popup, quindi sto cercando di fare tutto all'interno della pagina.Creazione di un pulsante di tweet senza aprire una nuova finestra

Sono in grado di creare correttamente il mio pulsante tweet, collegare un gestore onClick e creare un URL twitter.com/share appropriato per il contenuto pertinente. Funziona tutto bene quando apro quell'URL in una nuova finestra con window.open. Tuttavia, se provo ad aprire l'URL in un iframe, nulla viene caricato all'interno del frame. Anche il caricamento di http://twitter.com nell'iframe fallisce nello stesso modo. Tuttavia, caricare Google o qualsiasi altro sito sembra funzionare correttamente.

Qualche idea su cosa mi manca qui? Grazie! --zach

Edit: Sì, stanno rilevando l'iframe sul carico e tranciatura pagina:

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='';}; 

}

Qualsiasi modo ragionevole per aggirare il problema, o sono io bloccato scrivere la mia propria pipeline attraverso oauth? Non ho bisogno di nulla dalla loro API, semplicemente lasciando che gli utenti twittino sui propri account.

risposta

10

Twitter (come Stack Overflow) probabilmente sta usando un po 'di Javascript per assicurarsi che non sono stati presentati in un iFrame:

if(top!=self){ 
    //hates you 
} 

mi sono imbattuto in qualcosa di simile di recente, e ha finito per ri-fare parte della mia app senza l'elemento iFrame.

+3

+1 per odiare !! –

1

Puoi semplicemente reindirizzare l'URL di condivisione di Twitter? Immagino che vogliano stare attenti all'apertura della finestra in iframe per impedire ai siti malevoli di twittare sull'account di un utente senza dare all'utente la possibilità di confermare prima il loro intento di inviare questo tweet.

2

Go e ottenere un account sviluppatore su twitter e le cose sono facili per voi :)

0

Lei ha detto window.open funzionato bene per spuntare l'URL in una nuova finestra, ma hai provato popping nella genitore telaio?

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

@yuval Purtroppo per voi, il cinguettio URL va ad una pagina che ha gli X-FRAME-OPTIONS: intestazione SAMEORIGIN impostato nella risposta. Non è un controllo Javascript. Il browser semplicemente rifiuterà di eseguire il rendering della pagina dopo aver visto l'intestazione. Questo è fatto per prevenire un attacco clickjacking, di solito fatto per rubare la password di un utente.

Quindi l'unica altra opzione è davvero quella di reindirizzare la pagina corrente con window.location.href=url.

Problemi correlati