pworld 2017-04-05
之前在Chrome里运行正常的代码,Chrome升级到56后报表单提交错误:
Formsubmissioncanceledbecausetheformisnotconnected
代码如下:
functionsubmitData(name){
varform=$('<formmethod="post"action="updateName">'
+'<inputtype="submit"/>'
+'<inputtype="hidden"name="name"value="'+name+'"/></form>');
$('input[type="submit"]',form).click();
}
问题解决
原因
HTML标准规定如果form表单没有被添加到document里,那么form表单提交将会被终止。
参考:Formsubmissionalgorithm
在Chrome56之前的版本是不符合标准的,Chrome56修复了这个问题,让form表单提交符合标准要求:
参考:Chromeissue2416033002
解决方法
解决方法就是把form表单添加到document后再提交:
jQuery
$(document).append(form);
或
document.body.appendChild(form);