在包含mydomain.tld
的网站中,嵌入了包含otherdomain.tld
托管的表单的iFrame。两个站点都在端口80上运行非SSL。
现在,这个表格不会在iOS 7上运行的iPhone 5上提交。我可以在选择“iPhone Retina(4英寸64位)”时在iOS模拟器中重现它(不会发生在“4” -inch“only only。”
触发提交事件(至少如果我通过JavaScript捕获它),但根据开发人员工具没有请求。
如果我直接打开iFrame源,表单将会提交。
我在使用Internet Explorer时遇到了类似的问题并了解了P3P并且可以解决发送特殊P3P标头的问题:
P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"
但是对于Safari提到的问题,这似乎不是问题。
iFrames中有关于Safari和表单的已知限制吗?
答案 0 :(得分:0)
正如我发现的那样,问题与在iFrame中使用Cookie有关,这会在iFrame中触发表单的Spamshield来阻止表单提交。
由于它是一个选择加入形式,我停用了Spamshield,但是我找到了一个解决方案(我没有测试)应该通过提交到加载iFrame时触发的隐藏表单来使Cookie工作内容。
<script> window.setTimeout(function() { if (document.cookie.indexOf('test_cookie=1') < 0) { var name = 'test_cookie', div = document.getElementById(name), iframe = document.createElement('iframe'), form = document.createElement('form'); iframe.name = name; iframe.src = 'javascript:false'; div.appendChild(iframe); form.action = location.toString(); form.method = 'POST'; form.target = name; div.appendChild(form); form.submit(); } }, 10); </script>
答案 1 :(得分:0)
IOS设备使用href =“tel:xxxxx”更改数字以锚定链接并弄乱json数据 http://xatzis.com/2014/03/29/submitting-forms-iframes-ios-devices/