2009-05-29 2 views
0

이 질문은 Showing/Hiding div의 확장입니다.div 표시/숨기기 CollapsePanel after ClientScript.RegisterClientScriptBlock

앞에서 설명한 것처럼로드 할 때 접기 패널이 깜박 거리지 않게하는 해결 방법을 발견했습니다.

<div id="divMenuContent" style="visibility:hidden; display:none;"> 
    <asp:Panel ID="pnlAddNewContent" runat="server" CssClass="collapsePanel" Width="500px"> 
    </asp:Panel> 
</div> 

및 신체 부하가 에 onLoad = "자바 스크립트입니다 :

function showDivs() { 

       divMenuContent.style.visibility = 'visible'; 
       divMenuContent.style.display='block'; 


    } 

</script> 

및 패널로 사업부에 숨겨진 : 헤더에

:

내 솔루션이되었다 showDivs을 (); "

것은 공백 페이지에서 완벽하게 작동합니다. 하지만 내가 할 때 생각합니다.

ClientScript.RegisterClientScriptBlock(this.GetType(), "", sb.ToString()); 

패널이 붕괴/표시되지 않아서 작동하지 않습니다. 위의 코드가 작동합니다.

div를 표시하기 위해 clientScipt가 javascript와 충돌한다고 생각합니까? 브라우저 내에서 Javascript 실행 오류가 발생하지 않습니다.

추가 정보 : 포스트 백이 아닌 경우 clientScript가 호출됩니다. 나는 또한 그것의 끝에 다음 코드를 추가하여 clientscript에서 자바 스크립트를 호출하는 것을 시도했다 :

sb.Append("\n}\nshowDivs();</script>\n"); 

그러나 나는 다음과 같은 오류 얻을이 시간 :

divMenuConent is undefined.

어떤 솔루션을?

답변

0

제가 기억한다면 RegisterClientScriptBlock이 JS를 헤드에 삽입합니다. 그 코드를 코드 위에 삽입하는 것이 될 수 있습니다. 이제 그것은 주입 된 코드가 무엇을하는지에 따라 두 가지를 의미 할 수 있습니다.

  • 는 (모든 물건 온로드 후에 할 필요가 아직로드 한 것처럼 당신이 DOM에 혼란을 할 수 없습니다 그래서이 머리에 기억)
  • 바로 모든 요소를 ​​참조하는
  • 아래에만 선언 할 수있는 divMenuContent를 참조하고 있습니까
  • 나머지 inpage JS가 실행되는 것을 중지시키는 오류가 발생하고 있습니까?

파이어 폭스에서 firebug를 사용하여 재미있는 JS 오류가 발생하지 않았는지 다시 확인하고 원본을보고 다시 확인해야합니다.

또한 JS 프레임 워크 중 하나를 사용하여 여러 개의 onload 이벤트를 연결하여 이전에 첨부 된 이벤트를 덮어 쓸 위험이 없어야합니다. 이렇게하면 페이지가로드 될 때 여러 기능을 실행할 수 있습니다 (DOM이로드 될 때 더 빠르며 더 빠른 경우). 난 당신이 이런 종류의 요구 사항에 대한 RegisterStartupScript를 사용할 수있는이

// You can add as many of these as you like and they will all run :) 
window.addEvent("domready", function() { 
    // Code to run goes here 
}); 
+0

괜찮아요. 해결책을 찾을 수있을 것 같아요. 어떻게하면됩니까? if (cpeMenuContent.Collapsed) {}; 자바 스크립트 (cpeMenuContent는 CollapsiblePanelExtender이므로)? pnlMenuContent – waqasahmed

0

뭔가를 할 수있는 경우에 Mootools의 제안 것입니다.

+0

차이점이 없습니다. Page.RegisterClientScriptBlock ("", sb.ToString()); ClientScript.RegisterClientScriptBlock (this.GetType(), "", sb.ToString()); ClientScript.RegisterStartupScript (this.GetType(), "", sb.ToString()); 내가하고 싶은 일을 위해 – waqasahmed