2009-11-16 6 views
0

ASP.NET 페이지의 PostBack 바로 뒤에 Java 애플릿 메서드를 호출하려고합니다. 이를 위해 ScriptManager.RegisterStartupScript 함수를 사용하는데 작은 스크립트 블록을 전달하여 애플릿 함수를 호출하는 페이지에서 함수를 호출합니다. 다중 단계로 보이지만 코드에서 작성된 스크립트 블록에서 애플릿 함수를 호출하려고하면 아무 것도 얻을 수 없습니다. 나는 실제로 스크립트 블럭 뒤에서 호출되는 함수에 자바 스크립트 경고를 넣었을 때만 나는 결과를 얻었다.RegisterStartupScript에서 애플릿 함수 호출

질문은 애플릿 함수가 호출되기 전에 경고를 발령 할 필요가 없다는 것을 알 수 있습니까?

다음은 시나리오를보다 잘 설명하기위한 단순화 된 의사 코드입니다. 이것의

(.ascx.cs - yes this is in a user control, perhaps that is problematic?) 
protected void SetupAppletInput() 
{ 
    string scriptBlock = CreateJavaScriptBlock(dataForApplet); 
    ScriptManager.RegisterStartupScript(grvDataSet, grvDataSet.GetType(), "clicky", scriptBlock, true); 
} 
protected string CreateJavaScriptBlock(String dataForApplet) 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("CallAppletFunction(dataForApplet);"); 
    return sb.ToString(); 
} 

(.ascx) 

    function CallAppletFunction(dataForApplet) 
    { 
     alert("Calling applet function"); // with this line in it works, but is really annoying to have to click the alert off for every PostBack 
     document.ReallyCoolApplet.functionToCall(dataForApplet); 
    } 



외부 내가 유일하게 관련 사실이 페이지의 일부가 다시 게시 UpdatePanel에되고 있다고 생각하는하지만, 애플릿 자체는 업데이트 패널에없는 내가 '가 외설 생각 다시로드하는 중.

나는 이것을 적절하게 설명했으면 좋겠다. 이것에 대한 도움이나 의견을 보내 주셔서 감사합니다!

+0

자바 스크립트 타이머를 사용하여 CallAppletFunction에 대한 호출을 지연하면 어떻게됩니까? 예 : setTimeout ('CallAppletFunction (dataForApplet)', 1000) – Phaedrus

+0

나는 같은 생각을 주사위로 생각하지 않고 몇 가지 변형을 시도했다. 나는 또한 Applet.IsActive()를 찾고 루핑을 시도하고 각각 사이에 1 초를 멈추지 않았다. 나는 IsActive() 함수를 체크하는 이전의 시도가 나를 의심스럽게 만들었지 만 나는 그것에 많은 주식을 두지 않았다. 감사! – elo

답변

0

늦었지만이 작업을 수행하는 좋은 방법은 애플릿 시작 메소드에서 자바 스크립트를 호출하는 것입니다.

그런 다음 제대로 애플릿을 호출 할 수 있어야합니다.

애플릿이 항상 시작 메소드에서 적절한 작업을 수행 할 수 있도록 약간의 중복성이있는 것처럼 보입니다.

이렇게하면 애플릿이로드되면 시작 메소드가 실행되는 즉시 설정 시간 동안 기다릴 필요가 없습니다.