2010-04-29 66 views
2

我們目前有兩個asp.net 2.x web應用程序,我們需要執行以下功能:如何使用jQuery/JavaScript打開彈出窗口/選項卡(ASPX登錄頁面),然後將值傳遞給DOM Ready事件中打開的窗口/選項卡?

從一個應用程序中,我們希望自動登錄到另一個web應用程序自動在一個新的選項卡;使用相同的瀏覽器實例/窗口。

所以這個過程是:

打開新窗口/標籤有了第二個系統網址/登錄頁面 等待彈出窗口/標籤頁面加載

OnPopupDomReady { 獲取USENAME(DOM已準備就緒?) ,密碼,PIN控制(jQuery選擇器)和填充代碼,然後單擊登錄按鈕(全部以編程方式)。 }

我目前使用JavaScript來打開窗口如下:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('a[rel="external"]').click(function() 
     { 
     window.open($(this).attr('href')); 
     return false; 
     }); 
     }); 
</script> 

我想使用jQuery鏈接功能,如果可能的程度上述方法使得我可以附加一個DOM就緒事件彈出頁面,然後使用該事件調用彈出頁面後面的代碼的方法來自動登錄。同樣的事情也該(注:以下代碼示例不起作用,正是在這裏,試圖幫助說明我們正在努力實現的)...

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('a[rel="external"]').click(function() { 
     window.open($(this).attr('href').ready(function() 
     { 
      // Use JavaScript (Pref. jQuery Partial Control Name Selectors) To Populate Username/Password TextBoxes & Click Login Button. 
     }) 
     }); 

    }); 
    </script> 

我們的架構如下: 我們有兩種產品的源代碼(ASP.NET WebSite [s]),它們在不同的應用程序下運行。 IIS中的池。

回答

1

當您使用window.open打開窗口時,新窗口將獲得一個名爲window.opener的屬性,該屬性引用父窗口。因此,在你的子窗口代碼可以調用函數的父窗口,例如:

在窗口A:

// Declared at global scope => ends up as property on `window` 
function phoneHome(str) { 
    alert(str); 
} 

窗口B(子窗口):

$.ready(function() { 
    if (window.opener && window.opener.phoneHome) { 
     window.opener.phoneHome("Hi, Ma!"); 
    } 
}); 

(使用子窗口中的$.ready要求子窗口加載jQuery。)

在上面我所做的一切都是讓子窗口觸發父窗口中的函數w帶有消息,但當然函數調用可以攜帶任何你想要的數據。

相關問題