Закрыть дочерний всплывающий код JQuery на родительской странице - PullRequest
1 голос
/ 28 февраля 2012

Я делаю некоторую аутентификацию в твиттере в классическом asp (я знаю, но я не могу изменить это). Что я делаю, так это открываю страницу аутентификации во всплывающем окне через jQuery / JS с помощью window.open, который обрабатывает всю аутентификацию rest / oauth, а затем возвращается на ту же страницу с нужными мне ключами oauth. Затем я хотел бы закрыть всплывающее окно и запустить некоторые события JQuery Hide / Show без обновления страницы.

Код для отключения скрипта всплывающих окон и аутентификации:

    jQuery(document).ready(function() {
        jQuery("#twitter-button").live("click", function() {
        jQuery("#twitter-button").attr("value", "Processing");
        jQuery("#twitter-button").removeClass();
        jQuery("#twitter-button").addClass("twitter-button-processing");
        window.open('authentication.asp','_blank','width=600,height=400');
        return false;
        });
    });

Затем на той же странице у меня есть следующий код, вложенный в некоторый ASP, когда мы перенаправляемся обратно:

if Session("OAUTH_TOKEN") <> "" And Session("OAUTH_TOKEN_SECRET") <> "" Then
%>
<script type="text/javascript" charset="utf-8" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
  window.close();
  // I'd like to show/hide new buttons on the parent page here
});

</script>
<%
End If

Цель состоит в том, чтобы изменить кнопку с классом обработки твиттер-кнопок, который не отображает ни одного, но я не могу заставить его изменить в родительском окне. Я попытался разместить jQuery ('. Twitter-button-processing'). Hide (); в функции jQuery (window) .unload () после закрытия, но это не дало правильного результата.

Я пробовал решения из Связывание события jQuery с дочерним окном и Как запустить функцию родительского окна при закрытии дочернего окна? безрезультатно. Любая помощь будет фантастической.

1 Ответ

1 голос
/ 06 марта 2012

Так что я в конечном итоге определил ответ самостоятельно. Вместо того, чтобы перенаправлять обратно на ту же страницу, которая становилась грязной, я перенаправляю на пустую страницу из всплывающего окна Twitter с некоторым классическим ASP, который проверяет несколько переменных сеанса.

Основной файл

var someFunction = function(data){
  //some functionality
}

Окно перенаправления Twitter Popup в проверке asp

window.opener.someFunction();
window.close();

Это было именно то, что мне нужно было сделать, вызвав JS в родительском окне при закрытии дочернего элемента. Может быть, это поможет кому-то еще.

...