2016-07-14 1 views
1

Я использую API-интерфейс Instagram, и единственный способ выйти из него - по ссылке https://instagram.com/accounts/logout/, которая перенаправляет пользователя на страницу Instagram (если кто-то знает альтернативный метод, пожалуйста, дайте мне знать). Однако я хочу перенаправить пользователя на свою страницу. (.. Я уже пробовал методы, чтобы сделать это в this сообщение The img/iframe будет добавлять и перенаправить пользователя на моей странице, но пользователь все еще был подписан в) Это код, который я в настоящее время с помощью:window.close() не работает (изначально открывается через JS/JQuery)

$('.logout').on("click", function() { 
    window.open('https://instagram.com/accounts/logout/'); 
    window.close(); 
    window.location.replace("logout-page.html"); 
} 

Страница Instagram успешно открывается на новой вкладке и выписывает пользователя, а моя страница перенаправляется на страницу выхода, но я хочу, чтобы страница выхода из системы Instagram закрылась сама по себе после ее открытия. Другие люди говорили, что window.close() работает только тогда, когда он был открыт через скрипт, используя window.open(), который я делаю, и он все еще не работает. Я также попробовал window.open("", self).close(), и другие варианты этого и те не сработали для меня.

+0

«Я хочу, чтобы страница выхода из системы Instagram закрылась» Итак, вы хотите закрыть недавно открывшееся окно? Храните его в переменной и используйте эту переменную в качестве контекста 'close()'. В настоящее время вы пытаетесь закрыть текущее окно, то есть окно, которое выполняет скрипт. – Teemu

+0

Я тоже пробовал, и он тоже не работал –

+0

?? Попробуйте [задержка] (https://jsfiddle.net/t4zfe8so/). – Teemu

ответ

1

Чтобы закрыть открытое окно, вы должны определить его как объект.

A setTimeout Задержка закрытия позволит полностью открыть URL-адрес.
Отрегулируйте задержку при необходимости ... Но 1 секунда должна работать.

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

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

EDIT
Кажется, что это не возможно «скрыть» всплывающее окно ...
Я нашел путь в this answer, но он требует, чтобы добавить скрипт во всплывающей странице. ..

С помощью сценария выше всплывающее окно открывается как новая вкладка ... И остается открытым только 1 секунду. Это было лучшее, что я мог сказать ... До тех пор, пока я не нашел this other solution, что вы можете попробовать.

+0

Я пробовал те, и они не работали, к сожалению –

+1

oh кросс-доменных запросов ... – SparK

+0

Я обновил свой ответ с задержкой ... Возможно, вам нужно держать окно открытым достаточно долго, чтобы загрузить страницу. ;) –

1

window.open возвращает объект, который был открыт. Чтобы изменить это новое окно, которое вы должны использовать возвращаемый объект как:

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

В любом случае это не является хорошим решением, потому что вы не знаете ли загружена новое открытое окно страницы успешно или закончили загрузку его ,

Я бы рекомендовал просто открыть страницу выхода из системы в новом окне и перенаправлять текущую страницу, как это:

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

Отлично, он работает! Вы знаете, есть ли способ открыть новое окно позади оригинала? Так что пользователь не видит внезапное всплывающее окно и исчезает. –

+1

Да! прочитайте здесь http://www.w3schools.com/jsref/met_win_open.asp Вы можете позиционировать новое окно из окна просмотра ... Как «left =» - 1000px », top =« - 1000px »' –

+0

Звучит неплохо, благодаря! –

0

просто открыть URL в скрытый IFRAME, который добавляется в DOM где-то. Ниже JQuery код:

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

Это, как я реализовал в https://www.picosdash.com выйти из системы и позволяет несколько логин в приложении, прекрасно работает.

+0

Это то, что было предложено другим сообщением, которое я связал выше, что не сработало для меня –

+0

Это вызывает эту ошибку в консоли: 'Отказано для отображения https://www.instagram.com/ 'в фрейме, потому что он устанавливает' X-Frame-Options "в" SAMEORIGIN ". ... Может быть, не во всех браузерах ... Но в Chrome. –

+0

Я знаю, но он выходит из системы, возникает ошибка, потому что URL-адрес позже перенаправляется только на «instagram.com» и блокируется с помощью «X-frame-Options», но открывается URL-адрес выхода и выполняет выход из системы – krisrak

Смежные вопросы