2009-04-08 30 views
11

Tình huống khi bạn muốn sử dụng chức năng window.showModalDialog là gì? Nó đường nối mà bạn có thể làm chính xác giống với chức năng window.open và vài thông số loại bỏ một số chrome (điều hướng, thanh địa chỉ, v.v.)window.showModalDialog vs. window.open

Khi nào bạn muốn sử dụng window.showModalDialog và window.open ?

Trả lời

10

Hộp thoại phương thức là các hộp thoại đã được cha mẹ mở, không cho phép bạn tập trung vào phụ huynh cho đến khi hộp thoại đóng.

Bạn có thể sử dụng hộp thoại phương thức cho biểu mẫu đăng nhập, chỉnh sửa biểu mẫu, v.v. nơi bạn muốn có cửa sổ bật lên tương tác người dùng nhưng không cho phép người dùng quay lại cửa sổ mở cửa sổ bật lên.

Là một lưu ý phụ, tôi tin rằng chỉ Internet Explorer triển khai window.showModalDialog, do đó loại giới hạn việc sử dụng của bạn.

+0

FF3 cuối cùng cũng có nó. Chrome cũng vậy nhưng tôi không nghĩ nó thực sự là phương thức ở đó (có thể nhấp vào đằng sau nó). –

+0

một tham số để window.open có thể làm cho nó phương thức – geowa4

+1

Theo https://developer.mozilla.org/en/window.open: phương thức: Bắt đầu với Mozilla 1.2.1, tính năng này yêu cầu đặc quyền UniversalBrowserWrite. Nếu không có đặc quyền này, nó sẽ bị bỏ qua. –

3

Lưu ý rằng có lỗi trong Chrome 2 giúp ngăn chặn showModalDialog() tải đúng cách. Cửa sổ bật lên xuất hiện, nhưng nội dung không bao giờ tải.

Một lý do nữa để tránh sử dụng showModalDialog().

0

showModalDialog() hoạt động tốt trong trình duyệt Internet Explorer, Firefox (3 trở lên) trình trong Chrome nhưng bật lên không phải là mô hình (bạn có thể đi đến cửa sổ cha mẹ)

17

Nó đã được một vài năm kể từ khi câu hỏi này ban đầu được hỏi và mọi thứ đã thay đổi một chút kể từ đó. window.showModalDialog hiện chính thức là standardized as part of HTML5 và được hỗ trợ trong IE, Firefox 3+, Chrome (albeit buggy) và Safari 5.1+.

Thật không may window.showModalDialog vẫn bị cản trở bởi một số vấn đề.

  • Hộp thoại phương thức bị chặn làm cửa sổ bật lên theo mặc định trong Firefox, Chrome và Safari.
  • Các hộp thoại phương thức trong Chrome bị lỗi và không thực sự phương thức - xem http://code.google.com/p/chromium/issues/detail?id=16045 & http://code.google.com/p/chromium/issues/detail?id=42939.
  • Tất cả các trình duyệt ngoại trừ Chrome chặn người dùng tương tác với toàn bộ cửa sổ (mục yêu thích, điều khiển trình duyệt, các tab khác, v.v.) khi hộp thoại phương thức bật lên.
  • Họ là một nỗi đau để gỡ lỗi vì họ tạm dừng thực thi JavaScript trong cửa sổ chính trong khi chờ hộp thoại phương thức hoàn tất.
  • Không có trình duyệt di động nào hỗ trợ window.showModalDialog.

Do đó, bạn vẫn nên sử dụng window.showModalDialog. Nếu bạn cần cửa sổ được mở là phương thức (tức là người dùng không thể tương tác với phần còn lại của trang cho đến khi họ đối phó với hộp thoại), tôi sẽ đề xuất sử dụng jQuery UI's dialog plugin.

window.open sẽ hoạt động cho các cửa sổ không phải là phương thức nhưng tôi sẽ gắn với hộp thoại của jQuery UI vì mở cửa sổ mới có xu hướng làm phiền người dùng.

Nếu bạn quan tâm, tôi viết về điều này chi tiết hơn trên blog của tôi - http://tjvantoll.com/2012/05/02/showmodaldialog-what-it-is-and-why-you-should-never-use-it/.

0

Lưu ý rằng mặc dù bạn có thể hiển thị phương thức từ bất kỳ cửa sổ bật lên nào, bạn không thể sử dụng window.open từ hộp thoại mô hình trong một số trình duyệt (IE, Safari).

Các vấn đề liên quan