Как я могу использовать jQuery / JavaScript, чтобы открыть всплывающее окно / вкладку (страница входа ASPX), а затем передать значения в открытое окно / вкладку на DOM Ready Event? - PullRequest
2 голосов
/ 29 апреля 2010

В настоящее время у нас есть два веб-приложения asp.net 2.x, и нам необходимо выполнить следующие функции:

Из одного приложения мы хотим автоматически войти в другое веб-приложение в новой вкладке; используя тот же экземпляр браузера / окно.

Итак, процесс выглядит так:

Открыть новое окно / вкладку со вторым системным URL / страницей входа Ожидание загрузки всплывающего окна / вкладки (DOM Ready?)

OnPopupDomReady { Получите имя пользователя, пароль, элементы управления 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 Ready к всплывающей странице и затем использовать это событие для вызова метода в коде позади всплывающей страницы для автоматического входа. Что-то похожее на это (Примечание: следующий пример кода не работает, он здесь, чтобы попытаться проиллюстрировать то, что мы пытаемся достичь) ...

 <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 Ответ

1 голос
/ 29 апреля 2010

Когда вы открываете окно с 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.)

В вышесказанном все, что я сделал, это заставил дочернее окно вызвать функцию в родительском окне с сообщением, но, конечно, вызов функции может содержать любые данные, которые вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...