关闭子弹出窗口激活父页面上的jQuery代码

时间:2012-02-28 18:24:35

标签: javascript jquery asp-classic popup parent-child

我在经典的asp中做了一些twitter认证(我知道,但我不能改变它)。我正在做的是通过jQuery / JS在弹出窗口中打开一个身份验证页面,其中window.open处理所有其余/ 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

目标是通过一组twitter-button-processing显示none来更改按钮,但我无法在父窗口中进行更改。我尝试过放置jQuery('。twitter-button-processing')。hide();在关闭后的jQuery(窗口).unload()函数中,但这并没有产生正确的结果。

我尝试了Binding jQuery event on a child windowHow to run function of parent window when child window closes?的解决方案无济于事。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

所以我最终找到了自己的答案。我没有重定向回到变得混乱的同一页面,而是从twitter弹出窗口重定向到一个空白页面,其中包含一些检查一些会话变量的经典ASP。

主文件

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

asp检查中的Twitter弹出重定向窗口

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

通过在关闭子窗口时调用父窗口上的JS,我完全可以做到这一点。也许这会帮助别人。