2010-12-13 15 views
5

Ich möchte einen Tweet-Button zu einer Site hinzufügen. Einfach genug, oder? Der Clou ist, dass die Site auf einer eingebetteten Plattform laufen soll, die Popup-Fenster nicht besonders behandelt, also versuche ich alles innerhalb der Seite zu machen.Einen Tweet-Button erstellen, ohne ein neues Fenster zu öffnen

Ich bin erfolgreich in der Lage, meine Tweet-Schaltfläche zu erstellen, einen onClick-Handler anhängen und eine richtige twitter.com/share URL für den relevanten Inhalt erstellen. Alles funktioniert gut, wenn ich diese URL in einem neuen Fenster mit window.open öffne. Wenn ich jedoch versuche, die URL in einem Iframe zu öffnen, wird nichts in den Frame geladen. Selbst das Laden von http://twitter.com in den iframe schlägt auf die gleiche Weise fehl. Das Laden von Google oder einer anderen Website scheint jedoch gut zu funktionieren.

Irgendwelche Gedanken darüber, was ich hier vermisse? Vielen Dank! --zach

Edit: Yep, sie die iframe auf Last Erkennung und Ausblendung der Seite:

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

}

Jeder vernünftige Art und Weise, dies zu umgehen, oder bin ich stecken schreibe meine eigene Auth-Pipeline durch oauth? Ich brauche nichts von ihrer API und lasse die Nutzer einfach zu ihren eigenen Accounts twittern.

Antwort

10

Twitter (wie Stack-Überlauf) wird wahrscheinlich einige Javascript verwenden sie, um sicherzustellen, nicht in einem iFrame präsentiert:

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

ich in etwas vor kurzem lief ähnlich, und am Ende wieder tun Teil meiner App ohne das iFrame-Element.

+3

+1 zum Hassen !! –

1

Können Sie die URL für den Twitter-Share einfach umleiten? Ich schätze, sie wollen vorsichtig sein, wenn sie das Fenster in Iframes öffnen, um zu verhindern, dass bösartige Seiten in einem Benutzerkonto twittern, ohne dem Nutzer eine Chance zu geben, seine Absicht, diesen Tweet zu senden, zu bestätigen.

2

Go und ein developper Konto auf Twitter und die Dinge sind für Sie leicht gemacht :)

0

Sie sagte window.open für Aufspringen die URL in einem neuen Fenster fein gearbeitet, aber haben Sie es in die übergeordnete versucht popping Rahmen?

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

@yuval Leider für Sie, geht die Twitter-URL auf eine Seite, die die X-FRAME-OPTIONS hat: in der Antwort gesetzt SAMEORIGIN-Header. Es ist kein Javascript-Check. Der Browser wird es einfach ablehnen, die Seite nach dem Anzeigen der Kopfzeile zu rendern. Dies wird durchgeführt, um eine clickjacking Attacke zu verhindern, die normalerweise durchgeführt wird, um das Passwort eines Benutzers zu stehlen.

So ist Ihre einzige andere Option wirklich, Ihre aktuelle Seite mit window.location.href=url umzuleiten.

Verwandte Themen