2009-05-20 4 views
6

나는 클라이언트의 자바 스크립트의 사용 여부를 감지하는 숨겨진 필드 'Isjsenabled'를 사용하고 있습니다. 자바 스크립트가 활성화 된 경우, 자바 스크립트 기능이 해고 될 것입니다 그리고 내가 서버 사이드를 Page_Load에서 숨겨진 값을 확인하려면 1.페이지를로드하기 전에 어떻게 자바 스크립트 기능을 실행할 수 있습니까?

에 숨겨진 필드의 값을 설정합니다. 하지만 문제는 Javascript가 페이지로드 후에 시작된다는 것입니다.

당신이 어떤 제안이 있습니까? 당신이 이동하려는 방향에 대해 너무 열심히 생각하지 않고 제

protected void Page_Load(object sender, EventArgs e) {     
    HtmlInputHidden hdn = this.FindControl("Isjsenabled") as HtmlInputHidden; 
     if (hdn != null) 
      if (hdn.Value != null && hdn.Value == "0") 
       Helper.SetCookie("IJE", "0"); 
      else 
       Helper.SetCookie("IJE", "1"); 
} 
+2

는 클라이언트/서버 모델이다. 당신이 접근하는 방법은 불가능합니다. 닭고기와 달걀, 말 앞에있는 카트 등의 단순한 케이스입니다. 숨겨진 필드의 업데이트 된 값은 양식이 다시 게시 될 때까지 사용할 수 없습니다. – x0n

+0

하하 .. 나는 내가 아는 것을 잊지 않고있다. 내가 serverides에서 자바 스크립트 상태를 얻을 수있는 몇 가지 제안을 원한다. 나는이 순간에 내가 생각할 수없는 어떤 방법이 있다고 생각한다. – miti737

답변

11

뒤에

html로 부

<script type="text/javascript"> 
    $(function() { 
     $("#<%= Isjsenabled.ClientID %>").val(1); 
    }); 
</script> 

<input id="Isjsenabled" runat="server" value ="0" type="hidden" /> 

코드는 모든 브라우저에서 지원하는 거의 사용 태그가 NOSCRIPT라고합니다.

<noscript> 
<img src="http://myserver/notify_no_script.aspx" style="display:none"> 
</noscript> 

보시다시피, 브라우저가 이미지를 요청하지만 자바 스크립트가 비활성화 된 경우에만 표시되도록하는 것이 좋습니다. 이 페이지는 현재 클라이언트가 현재 세션의 모든 코드에서 사용할 수있는 스크립트 기능을 가지고 있지 않다는 것을 나타내는 세션 변수를 설정할 수 있습니다.

또는, 현재의 방법론에 따라 수 :이 도움이

<noscript> 
<input type="hidden" name="noscript" value="1"> 
</noscript> 
<script><!-- 
document.writeline('<input type="hidden" name="noscript" value="0">'); 
//--></script> 

희망을,

-Oisin

+0

답변 해 주셔서 감사합니다. <스크립트 유형 = "텍스트/자바 스크립트 당신의 두번째 옵션을 사용 후 rendrered HTML "> '); // -> <입력 ID = "MyDetail_test1"유형 = "숨겨진"값 = "0"이름 = "MyDetail의 $의 TEST1"/> 는 사실은 내가 서버 측에서 값을 싶어. runat = "server"를 추가하면 js를 사용하면 숨겨진 필드를 모두 검색 할 수 있습니다. 뭐라 구요? – miti737

+2

자바 스크립트는 _server_ 페이지에서 _client_에서 실행됩니다. 원래 질문에 대한 언급에서 언급했듯이, 당신이하려는 것은 불가능합니다. 필드의 * new * 값을 읽으려면 다시 게시가 발생해야합니다. 브라우저와 페이지 사이에는 실제로 연결이 없습니다. – x0n

+0

도와 주신 Oisin에게 감사드립니다. 나는 너에게 동의한다. – miti737

1

Unobtrusive JavaScript이 관심이있을 수 있습니다. 페이지의 정상적인 품질 저하를 허용하면 개발이 간단 해집니다. 처음에는 JavaScript가 없도록 디자인하고 경험을 향상시킵니다. 응용 프로그램이 극도로 JavaScript 집중적이고 절대적으로 작동해야하는 경우에는 옵션이 아닐 수도 있습니다. 이 경우 noscript 태그를 사용하여 JavaScript 사용이 필요하다고 사용자에게 알리는 것이 좋습니다.

또한, x0n의 의견을보실 수 있습니다. 여기에 HTTP request life cycle을 이해하는 데 도움이되는 참고 자료가 있습니다.

+0

귀하의 제안에 대해 Daniel에게 감사드립니다. '눈에 잘 띄지 않는 자바 스크립트'는 자바 스크립트를 관리하는 우아한 방법입니다. 공유해 주셔서 감사합니다. 실제로 프로젝트의 요구 사항에 따라 브라우저의 자바 스크립트를 감지하고 서버 측에서 추가 작업을 위해 저장할 필요가 있습니다. 그래서 내가 저를 간과 할 수있는 해결책을 찾고있었습니다. – miti737

2

자바 스크립트는 그 자체로 쿠키를 설정할 수 있습니다.

이 문제가 해결 되었습니까?

+0

도움 주셔서 감사합니다. 나는 코드를 뒤에서 설정할 필요가 없도록 같은 일을했다. 그러나 누군가가 그 후에 자바 스크립트를 가능하게한다면 .. 쿠키가 존재합니다. 서버 측에서 IJE = 0을 삭제/설정해야합니다. – miti737

+0

당신은 항상 서버 쪽에서 IJE = 0을 설정하고 자바 스크립트로 IJE = 1을 설정할 수 있습니다. –

3

당신은 스크립트 또는 noscript 헤더를 페이지로 그려야합니다. 그러면 그 페이지는 자바 태그가 켜져 있으면 다음 페이지로 이동하기 위해 메타 태그 또는 스크립트 location.href를 통해 리디렉션됩니다. 2 단계로 진행되지만 원하는 결과를 얻을 수 있습니다. 리디렉션 쿼리에서 필요한 정보를 직접 전달할 수 있습니다. 당신이 웹을 잊고

+0

Thanks Dredel. 사실 '이동'버튼이있는 그리드가 있습니다. grid_ItemCommand 메서드에서 동적 쿼리 문자열을 사용하여 해당 js/nonjs 페이지를 리디렉션하려고 했으므로 코드 뒤에서 브라우저 상태를 알아야했습니다. 이제는 내가 어떻게 든 자바 스크립트에서 리디렉션해야한다고 생각합니다. – miti737

+0

"리디렉션"은 자바 스크립트없이 몇 가지 방법으로 수행 할 수 있습니다. 숨겨진 양식을 다음 위치로 'submit()'하도록 설정할 수 있습니다. 사용자가 'go'버튼을 누르면 이동 버튼을 링크 (위치 변경과 함께 매개 변수 전달)로 만들 수 있으며 이전 작업을 수행 할 수 있습니다 페이지가로드 될 때 메타 리디렉션됩니다. 당신이하고있는 일에 대해 더 자세한 정보를 제공한다면 덜 일반화 된 조언을 줄 수 있습니다. :) –

관련 문제