2016-07-14 13 views
1

Ich benutze eine Instagram API und die einzige Möglichkeit, sich abzumelden, ist über den Link https://instagram.com/accounts/logout/, der den Benutzer auf die Instagram - Seite umleitet (falls jemand eine alternative Methode bitte lass es mich wissen). Ich möchte jedoch den Benutzer auf meine eigene Seite umleiten. (.. Ich hatte zuvor versucht, die Methoden so in this Post zu tun Die img/iframe wird anhängen und den Benutzer auf meiner Seite umleiten, aber der Benutzer wurde noch angemeldet) Dies ist der Code, den ich derzeit benutze:window.close() funktioniert nicht (ursprünglich über JS/JQuery geöffnet)

Die Instagram-Seite wird erfolgreich in einem neuen Tab geöffnet und signiert den Benutzer, während meine Seite zur Abmeldeseite umleitet, aber ich möchte, dass die Instagram-Abmeldeseite nach dem Öffnen automatisch geschlossen wird. Andere Leute sagten, dass window.close() funktioniert nur, wenn es über Skript mit window.open() geöffnet wurde, was ich mache und es immer noch nicht funktioniert. Ich habe auch versucht window.open("", self).close() und andere Variationen davon, und diese funktionierten auch nicht für mich.

+0

"Ich möchte, dass die Instagram-Abmeldeseite geschlossen wird" Sie möchten also das neu geöffnete Fenster schließen? Speichern Sie es in einer Variablen und verwenden Sie diese Variable als Kontext für 'close()'. Momentan versuchen Sie, das aktuelle Fenster zu schließen, d. H. Das Fenster, in dem das Skript ausgeführt wird. – Teemu

+0

Ich habe das auch ausprobiert und es hat auch nicht funktioniert –

+0

?? Versuchen Sie es mit einem [delay] (https://jsfiddle.net/t4zfe8so/). – Teemu

Antwort

1

Um das geöffnete Fenster zu schließen, müssen Sie es als Objekt definieren.

Eine setTimeout Verzögerung zu schließen ermöglicht es, die URL vollständig zu öffnen.
Passen Sie die Verzögerung bei Bedarf ... Aber 1 Sekunde sollte funktionieren.

myWindow = window.open('https://instagram.com/accounts/logout/'); 

setTimeout(function(){ 
    myWindow.close(); 
},1000); 

EDIT
Es scheint, dass es nicht möglich, zu „verstecken“ ein Pop-up ...
ich einen Weg in this answer ist gefunden, aber es erfordert ein Skript in der Popup-Seite hinzuzufügen. ..

Mit dem obigen Skript öffnet sich das Popup als neue Registerkarte ... Und bleibt nur 1 Sekunde geöffnet. Das war das Beste, was ich sagen konnte ... Bis ich this other solution gefunden habe, dass du es versuchen kannst.

+0

Ich habe versucht, und sie haben nicht funktioniert, leider –

+1

oh Cross-Domain-Anfragen ... – SparK

+0

Ich aktualisierte meine Antwort mit einer Verzögerung ... Vielleicht müssen Sie das Fenster lang genug geöffnet halten, um die Seite zu laden. ;) –

1

window.open gibt ein Objekt des neuen Fensters zurück, das geöffnet wurde. Um dieses neue Fenster ändern müssen Sie wie das zurückgegebene Objekt verwenden:

new_window = window.open("url"); 
new_window.close(); 

Auf jeden Fall ist dies keine gute Lösung, weil Sie nicht wissen, ob die neuen geöffneten Fenster der Seite erfolgreich geladen haben oder laden es fertig .

Ich würde empfehlen, nur in einem neuen Fenster der Logout-Seite zu öffnen und die aktuelle Seite wie diese Umleitung:

my_window = window.open("url", "Window-Name", "height=200,width=200"); 
document.location = "your_url"; //redirects the current page...` 
+0

Großartig, es funktioniert! Weißt du, ob es eine Möglichkeit gibt, das neue Fenster hinter dem ursprünglichen zu öffnen? Damit der Benutzer kein Fenster sieht, taucht er plötzlich auf und verschwindet. –

+1

Ja! Lesen Sie hier http://www.w3schools.com/jsref/met_win_open.asp Sie können das neue Fenster aus dem Ansichtsfenster positionieren ... Wie 'left =" - 1000px ", top =" - 1000px "' –

+0

Klingt gut, Vielen Dank! –

0

öffnen Sie einfach die URL in versteckten iframe, die irgendwo in DOM angehängt wird. Im Folgenden finden Sie jQuery-Code:

$('#content').append('<div style="display:none"><iframe src="https://instagram.com/accounts/logout/" width="0" height="0"></iframe></div>'); 

Dies ist, wie ich in https://www.picosdash.com umgesetzt haben mehrere Konto Login in App abzumelden und ermöglichen, funktioniert super.

+0

Das ist es, was der andere Beitrag, den ich oben verlinkt habe, vorgeschlagen hat, der für mich nicht funktioniert –

+0

Er drückt diesen Fehler in der Konsole: 'Weigerte sich, 'https://www.instagram.com/' in einem Frame anzuzeigen, weil er 'gesetzt hat' X-Frame-Optionen zu "SAMEORIGIN". ... Vielleicht nicht in allen Browsern ... Aber in Chrome. –

+0

Ich weiß, aber es wird abgemeldet, der Fehler wird ausgelöst, weil url später nur zu "instagram.com" umleitet und das wird mit 'X-frame-Optionen' blockiert, aber die Abmelde-URL öffnet sich und macht den Job der Abmeldung – krisrak

Verwandte Themen