我希望 Safari 的表单自动填充功能在我的网络应用程序中的表单上工作。我们所有表单的提交事件都被阻止,而是通过 XHR (Ajax) POST 将数据发送到服务器。
问题是,Safari 在其自动填充(自动完成)“数据库”中创建新条目的默认设置要求表单的提交事件一直触发并冒泡。根据我的测试,这是我得出的结论,适用于表单 GET 和 POST 方法。
Firefox 中不存在此问题;我们所有的表单都保留了之前为每个字段“提交”的值。这是我们在 Safari 中想要的行为。
在我们的应用程序中,用户将在多个会话中多次填写相同的表单。在某些情况下,浏览器根据用户先前提交的值自动完成(在 Safari 中为自动填充)这些字段会很有用。
我想知道是否还有其他人在 Safari 上遇到过这个问题?如果他们有一个解决方案(即使是特定于 Safari)告诉(或强制)Safari 将表单字段值保存到它的自动填充数据库中,即使表单的提交事件被阻止,情况也会更好?
我已经在 DOM 中尝试了 preventDefault() 更高层,让提交事件冒泡到表单的父 DOM 节点;行为上没有区别。这可能只是 Safari 中的一个错误……</p>