2009-04-08 4 views
11

window.showModalDialog 함수를 사용하고자 할 때 어떤 상황이 발생합니까? Window.open 함수와 크롬 (탐색, 주소 표시 줄 등) 중 일부를 제거하는 몇 가지 매개 변수로 정확히 동일하게 수행 할 수 있습니다.window.showModalDialog 대 window.open

언제 windows.showModalDialog 및 window.open을 사용 하시겠습니까? ?

답변

10

모달 대화 상자는 부모가 열어 본 대화 상자로, 대화 상자가 닫힐 때까지 부모에게 집중할 수 없습니다.

사용자 상호 작용을위한 팝업이 있지만 사용자가 팝업을 연 창으로 돌아갈 수 없도록하려는 로그인 양식, 양식 편집 등의 모달 대화 상자를 사용할 수 있습니다.

부수적으로, 나는 Internet Explorer가 window.showModalDialog을 구현한다고 생각합니다. 따라서이 종류의 사용에는 한계가 있습니다.

+0

FF3이 마지막으로 있습니다. 크롬도 그렇지만 실제로는 모달이라고 생각하지 않습니다 (뒤에 클릭 할 수 있음). –

+0

window.open에 대한 매개 변수는 모달로 만들 수 있습니다 – geowa4

+1

https://developer.mozilla.org/en/window.open에 따라 : 모달 : 모질라 1.2.1부터이 기능을 사용하려면 UniversalBrowserWrite 권한이 필요합니다. 이 권한이 없으면 무시됩니다. –

3

Chrome 2에는 showModalDialog()가 제대로로드되지 않도록하는 버그가 있습니다. 팝업 창이 나타나지만 내용이로드되지 않습니다.

showModalDialog() 사용을 피하기위한 또 하나의 이유.

0

showModalDialog() 인터넷 익스플로러, 파이어 폭스 (3 이상) 크롬에서 작품에서 잘 작동하지만 팝업

17

그것은 몇 년이되었습니다. window.showModalDialog은 이제 공식적으로 standardized as part of HTML5이며 IE, Firefox 3 이상, Chrome (albeit buggy) 및 Safari 5.1 이상에서 지원됩니다.

불행히도 window.showModalDialog은 여전히 ​​여러 가지 문제로 인해 어려움을 겪고 있습니다.

  • 모달 대화 상자는 Firefox, Chrome, Safari에서 기본적으로 팝업으로 차단됩니다.
  • 크롬의 모달 대화 상자는 버그가 있으며 실제로는 모달이 아닙니다. http://code.google.com/p/chromium/issues/detail?id=16045 & http://code.google.com/p/chromium/issues/detail?id=42939을 참조하십시오.
  • 모달 대화 상자가 열려있을 때 Chrome을 제외한 모든 브라우저는 사용자가 전체 창 (즐겨 찾기, 브라우저 컨트롤, 다른 탭 등)과 상호 작용하는 것을 차단합니다.
  • 모달 대화 상자가 완료되기를 기다리는 동안 상위 창에서 JavaScript 실행을 중단하기 때문에 디버그하는 것이 쉽지 않습니다.
  • window.showModalDialog을 지원하는 모바일 브라우저가 없습니다.

따라서 window.showModalDialog을 사용하는 것은 여전히 ​​좋은 생각이 아닙니다. 창을 모달로 열어야하는 경우 (예 : 사용자가 대화를 처리 할 때까지 나머지 페이지와 상호 작용할 수 없음) jQuery UI's dialog plugin을 사용하는 것이 좋습니다.

window.open은 모달이 아닌 창에서 작동하지만 새 창을 열면 사용자를 괴롭히는 경향이 있으므로 jQuery UI 대화 상자를 계속 사용합니다.

관심이 있으시면이 블로그에 대한 자세한 내용은 http://tjvantoll.com/2012/05/02/showmodaldialog-what-it-is-and-why-you-should-never-use-it/을 참조하십시오.

0

팝업 창에서 모달을 표시 할 수 있지만 일부 브라우저 (IE, Safari)에서는 모델 대화 상자에서 window.open을 사용할 수 없습니다.