0

我必须将来自第三方网站的登录页面放在我正在开发的另一个网站的 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,但是我必须再次单击该按钮才能登录用户。谁能看到我做错了什么?谢谢。

4

2 回答 2

4

top.location.href 将浏览器的 url 设置为新的 url,因此您永远不会完成点击操作。

您可以做的是将表单的目标设置为“_top”

就像是

OnClientClick="document.getElementById('MYFORM_CLIENTID').target='_top';return true;"
于 2009-03-31T14:32:23.723 回答
1

查看您的代码,我认为在第一次单击时您没有登录。您只是将父窗口重定向到您的登录页面(最初显示在 IFrame 中的那个)。这就是为什么您需要单击该按钮两次才能登录的原因 - 第二次没有重定向,因为父窗口的 URL 没有改变,所以基本上第二次该top.location.href = document.location.href部分不会产生任何结果并且登录继续进行。

我认为正确的做法是首先进行身份验证,然后进行重定向,这与目前的情况相反。您可以在该页面的回发时添加一个脚本,以便它检查它是否在框架中运行,如果是,它将父窗口重定向到另一个页面。当然,如果您可以修改代码...根据提供的详细信息,我只能说出可能出了什么问题并提出修复建议,但无法给出解决方案。

于 2009-03-31T14:38:36.717 回答