8

jQuery (http://stanlemon.net/projects/jgrowl.html#samples)에 jGrowl 플러그인을 사용하여 페이지에 일부 메시지를 표시하려고합니다.Internet Explorer 8에서 ScriptManager.RegisterClientScriptBlock 및 jQuery 문제

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), Guid.NewGuid().ToString(), 
    "$.jGrowl('" + message + "');", true); 

코드는 파이어 폭스/크롬/사파리에서 완벽하게 작동 이렇게하려면,이 같은 ScriptManager.RegisterClientScriptBlock 메서드를 호출합니다. 그러나 Internet Explorer에서 알림이 표시되지 않고 자바 오류가 표시되지 않습니다.

저는 Windows 7에서 작동하며 인터넷 익스플로러 8 베타 (버전 8.0.7000.0)를 가지고 있으며 호환성 모드에서 같은 "버그"를 가지고 있습니다.

이 문제를 어떻게 해결할 수 있습니까?

답변

12

이 문제는 DOM 수정을 수행하기 전에 IE8에서 모든 DOM 요소가로드되기를 기대하기 때문에 발생합니다. jGrowl로 설명한 문제를 복제 할 수있었습니다.

문제를 해결하기 위해 문서 준비가 완료되면 jGrowl에 대한 호출이 수행되도록 스크립트를 수정했습니다. 여기에 업데이트 된 코드는 다음과 같습니다

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), 
    Guid.NewGuid().ToString(), 
    "$(function(){$.jGrowl('" + message + "');});", true); 
+0

답변 해 주셔서 감사합니다. 내가 고쳐 봤지만 아직 작동하지 않아. 페이지에 업데이트 패널이 있다는 사실 때문일 수 있습니까? –

+0

나는이 코드를 업데이트 패널로 테스트했지만 정상적으로 작동했다. 위의 코드를 실제로 복사 했습니까? 브라우저에서 자바 스크립트 오류가 발생하고 있습니까? –

+0

이 작업을 수행 한 후에도 여전히 문제가 발생하면 Beta 대신 IE8의 최종 버전으로 업그레이드해야 할 수 있습니다. –

2

페이지에 <form runat="server" id="form1">를 추가합니다. 그것은 작동 할 것입니다 ...

0

틀린 것이 아니라면, 나는 이것을 클라이언트 페이지에 추가해야한다고 생각합니다.

<script language="javascript" type="text/javascript" id="forModalPopUp"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_initializeRequest(InitializeRequest); 
    prm.add_endRequest(EndRequest); 
    function InitializeRequest(sender, args) { 
    } 
    function EndRequest(sender, args) { 
    } 
</script> 

자세한 내용은 this을 참조하십시오.