2009-01-11 5 views
9

jQuery plugin demo에 표시된 것과 같이 맞춤 프롬프트를 사용해야합니다. 문제는 모든 사용자 지정 음성 안내가 콜백에 따라 다르다는 것입니다. 즉, 비동기식입니다. 동기식이어야합니다. myPrompt 모달 사용자 정의 동기 프롬프트입니다자바 스크립트 동기 맞춤 프롬프트

alert("Your name is " + myPrompt("What's your name?")); 

:

내가 좋아하는 뭔가를 할 필요가있다.

가능합니까?

감사합니다, 나 이미

답변

3

당신은 모달 대화 상자로 DIV를 표시하는 JQuery와 UI 대화 상자를 사용할 수 있습니다.

http://docs.jquery.com/UI/Dialog/dialog#options 그러나 진정으로 동기 대화 상자 (차단 함수 호출) 브라우저의 도움을 필요를 지원하기 위해 참조하십시오. 모든 브라우저에서 지원하는 것은 아닙니다. IE는 수년 동안 해왔으며 최근에는 mozilla가 Firefox에 showModalDialog를 추가했습니다.

콜백을 사용하여 콜백을 계속 제공한다고 생각하십니까?

function dosomethingwhichneedsprompt() 
{ 
    var a = "stuff"; 
    var o = {} 
    //other code 
    displayPrompt("PleaseInputStuff",o) //o modified by prompt would like this to block 
    //continue to use data on o and the variable a after prompt dismissed. 
} 

displayPrompt 모든 브라우저에하지 격의 믿을 수있는 블록은, 프레임 워크 대신 콜백을 사용할 수 있기 때문에 - doSomethingWhichNeedsPrompt도 알고있을 필요가 호출 물론 아무것도의

function doSomethingWhichNeedsPrompt(fnContinue) 
{ 
    var a = "stuff"; 
    var o = {} 
    //other code 
    displayPrompt("PleaseInputStuff",o, fnCallback) 
    function fnCallback() { 
     //continue to use data on o and the variable a after prompt dismissed. 
     if (fnContinue) fnContinue(); 
    } 
} 

의 비동기 성질을 가지고 있고 거기에 doSomethingWhichNeedsPrompt을 위해 그것의 모든 일이 끝난 후에 부르는 함수 매개 변수를 취할 필요가 있습니다.

3

동기가 필요합니다.

귀하의 필요를 재고해야 할 수도 있습니다. IE7 +에서 window.prompt()를 허용하지 않으면 동기식 입력을받는 브라우저 간 방법이 없습니다.

showModalDialog가 있지만 전역 적으로 사용할 수있는 것은 아니며, 내 눈에는 꽤 사용자 적대적입니다. 대부분의 브라우저에서 동기식은 스크립트뿐만 아니라 브라우저의 UI를 차단하므로 매우 불편할 수 있습니다.

콜백 IMO 그렇게 나쁘지 않다 :

myPrompt("What's your name?", function(x) { 
    alert("Your name is "+x); 
}); 
관련 문제