Добавление JavaScript «onClientClick» в элемент управления входом в ASP.NET - PullRequest
0 голосов
/ 31 марта 2009

Мне нужно поместить страницу входа со стороннего веб-сайта в iframe на другой веб-сайт, который я разрабатываю. Мне нужно добавить JavaScript, чтобы выйти из iframe, когда пользователь входит в систему, но я не могу сделать кнопку входа в систему, чтобы выполнить JavaScript и выполнить обратную передачу для входа в систему - только один или другой.

Вот код со страницы входа в iframe, который я пытаюсь адаптировать:

<asp:LoginView ID="LoginView1" runat="server">
<AnonymousTemplate>
    <asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate">
        <LayoutTemplate>
                <asp:Label ID="lblUsername" runat="server" AssociatedControlID="Username" Text="Email" />
                <asp:TextBox ID="Username" runat="server" Text="myName" />
                <asp:Label ID="lblPassword" runat="server" AssociatedControlID="Password" Text="Password" />
                <asp:TextBox ID="Password" runat="server" Text="myPassword" />
                <asp:ImageButton ID="btnLogin" runat="server" CommandName="Login" ImageUrl="~/Images/login-submit.gif" AlternateText="Login" OnClientClick="top.location.href = document.location.href; return true;" />
        </LayoutTemplate>
    </asp:Login>
</AnonymousTemplate>
<LoggedInTemplate>
    You are currently logged in blurb..
</LoggedInTemplate>

В настоящее время, когда нажимается кнопка входа в систему, страница входа выходит из iframe, но затем мне нужно нажать кнопку еще раз, чтобы войти в систему. Может кто-нибудь увидеть, что я делаю неправильно? Спасибо.

Ответы [ 2 ]

4 голосов
/ 31 марта 2009

top.location.href устанавливает URL-адрес браузера в качестве нового URL, поэтому вы никогда не выполняете действие щелчка.

То, что вы могли бы сделать, это установить цель формы равной "_top"

что-то вроде

OnClientClick="document.getElementById('MYFORM_CLIENTID').target='_top';return true;"
1 голос
/ 31 марта 2009

Глядя на ваш код, я думаю, что при первом щелчке вы не входите в систему. Вы просто перенаправляете родительское окно на страницу входа (ту, которая сначала отображается в IFrame). Вот почему вам нужно дважды нажать эту кнопку для входа в систему - во второй раз перенаправление не происходит, так как URL родительского окна не изменяется, поэтому в основном во второй раз часть top.location.href = document.location.href не дает никаких результатов, и вход продолжается.

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

...