2009-03-31 11 views
0

開発中の別のWebサイトのiframeにサードパーティのWebサイトからログインページを置く必要があります。ユーザーがログインしたときにiframeから抜け出すためにJavaScriptを追加する必要がありますが、JavaScriptを実行してログインのポストバックを行うログインボタンを作ることはできません。ASP.NETログインコントロールに 'onClientClick' JavaScriptを追加する

は、ここで私は適応するtriyingだiframe'dログインページからのコードです:

<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

top.location.hrefは、ブラウザのURLを新しいURLに設定しているため、クリックの操作が完了することはありません。あなたは何ができるか

は、フォームのターゲットはあなたのコードを見てみると

OnClientClick="document.getElementById('MYFORM_CLIENTID').target='_top';return true;" 
+0

完璧、ありがとう。 – Nick

+0

うん、それはうまくいくはずです! –

1

よう

「_top」何かに設定されている私が最初にあなたがログインしていないクリックしてくださいと思います。親ウィンドウをログインページ(最初はIFrameに表示されているもの)にリダイレクトしているだけです。そのため、そのボタンを2回クリックしてログインする必要があります。つまり、親ウィンドウのURLは変更されないため、2回目のリダイレクトはないため、基本的に2回目には top.location.href = document.location.hrefの部分で結果が得られず、ログインが進みます。

私は、適切な行動の流れは、最初に認証し、次にリダイレクトして、現在の外観とは正反対であると考えています。そのページのポストバックにスクリプトを追加して、フレーム内で実行されているかどうかを確認し、そうであれば親ウィンドウを別のページにリダイレクトすることができます。もちろん、あなたはコードを修正することができます...提供された詳細の量で私は何が間違っている可能性がありますを示唆することができ、修正を提案するが、解決策を与えることはできません。

+0

残念ながら私はこの状況では.aspxにアクセスすることができますが、.csファイルにはアクセスできません。ログインページが私のサイトから投稿された値を受け入れるならば、私はiframe/javascriptナンセンスは必要ありません。:) – Nick

+0

とにかくJustinのソリューションが登場しました。私は少なくとも問題の原因を特定することができました... –

関連する問題