2009-03-31 5 views
0

제 3 자 웹 사이트의 로그인 페이지를 개발중인 다른 웹 사이트의 iframe에 넣어야합니다. 사용자가 로그인 할 때 iframe에서 벗어나기 위해 JavaScript를 추가해야하지만 로그인 버튼을 사용하여 JavaScript를 실행하고 로그인에 대한 포스트 백을 수행 할 수는 없습니다.ASP.NET 로그인 컨트롤에 'onClientClick'자바 스크립트 추가하기

가 여기에 내가 적응 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에 표시되는 페이지)로 리디렉션합니다. 두 번째로 리디렉션이 없으므로 부모 윈도우의 URL이 변경되지 않으므로 기본적으로 두 번째로 top.location.href = document.location.href 부분에서 결과가 나오지 않고 로그인이 진행됩니다. .

행동의 올바른 과정은 먼저 인증 한 다음 리디렉션하는 것이 현재 보이는 것과 정반대라고 생각합니다. 해당 페이지의 포스트 백에 스크립트를 추가하여 프레임에서 실행 중인지 확인하고, 그렇다면 부모 창을 다른 페이지로 리디렉션 할 수 있습니다. 물론 코드를 수정할 수 있다면 ... 제공된 세부 정보의 양을 통해 내가 잘못되었을 수도있는 부분을 말하고 수정을 제안 할 수는 있지만 해결책을 제시 할 수는 없습니다.

+0

불행히도 .cs 파일이 아닌 .aspx에만 액세스 할 수 있습니다. 그들의 로그인 페이지가 내 사이트에서 게시 된 값을 수락하면 iframe/javascript 난센스가 필요하지 않을 것입니다. :) – Nick

+0

Justin은 가장 간단한 솔루션을 제시했습니다. 적어도 문제의 원인을 파악할 수 있었는데 ... –

관련 문제