2009-12-01 27 views
5

Tôi muốn có tính năng hình thức AutoFill của Safari để làm việc trên các hình thức trong ứng dụng web của tôi. Tất cả các sự kiện nộp mẫu đơn của chúng tôi được ngăn chặn và thay vào đó chúng tôi gửi dữ liệu đến máy chủ thông qua XHR (Ajax) POST.Force Safari mục nhập biểu mẫu AutoFill khi sử dụng JavaScript để ngăn chặn sự của hình thức nộp

Vấn đề là, mặc định của Safari để tạo một mục mới trong nó AutoFill (autocomplete) "cơ sở dữ liệu" đòi hỏi nộp sự kiện của hình thức để bắn bong bóng tất cả các con đường lên. Từ thử nghiệm của tôi, đây là những gì tôi đã kết luận và làm việc cho các phương thức GET và POST.

Vấn đề này là không hiện diện trong Firefox; tất cả các biểu mẫu của chúng tôi giữ lại các giá trị trước đó đã được "gửi" cho từng trường. Đây là hành vi mong muốn mà chúng tôi muốn trong Safari.

Trong ứng dụng của chúng tôi một người dùng sẽ điền vào các hình thức tương tự nhiều lần qua nhiều phiên. Trong một số trường hợp, sẽ hữu ích cho trình duyệt để tự động hoàn thành (Tự động điền trong trường hợp của Safari) các trường này cho người dùng dựa trên các giá trị đã gửi trước đây của họ.

Tôi đã tự hỏi nếu bất cứ ai khác đã chạy vào vấn đề này với Safari? Và tốt hơn nếu họ có một giải pháp (ngay cả khi Safari cụ thể) để nói (hoặc buộc) Safari lưu các giá trị trường-form vào cơ sở dữ liệu Tự động điền của nó ngay cả khi sự kiện gửi biểu mẫu được ngăn chặn?

Tôi đã thử preventDefault() lên cao hơn trong DOM, cho phép các trình sự kiện bong bóng lên đến nút cha DOM của biểu mẫu; không có sự khác biệt về hành vi. Có thể đây chỉ là lỗi trong Safari…

+0

Tôi gặp vấn đề tương tự trong cả Safari và Chrome (không đáng ngạc nhiên). Không thể tìm thấy câu trả lời. Bạn đã tìm được giải pháp từ năm ngoái chưa? –

+0

Jean, tôi không :-(và hành vi này rất khó chịu. –

+0

Mọi cập nhật về vấn đề này? – mkurz

Trả lời

0

Đối với biểu mẫu sử dụng HTTPS, đây là hành vi mong đợi đối với Safari, điều này trái với tiêu chuẩn W3C của anh ấy.

Cách duy nhất xung quanh việc này là bao gồm hình ảnh hoặc thẻ tương tự, trỏ đến tài nguyên HTTP. Tất nhiên, bạn sẽ mất khóa móc và trang của bạn sẽ được xem là không an toàn.

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