提交嵌入在iFrame中的表单在iOS 7中不起作用

时间:2014-01-15 08:11:10

标签: ios iphone iframe mobile-safari p3p

在包含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和表单的已知限制吗?

2 个答案:

答案 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>

来源:https://gist.github.com/daaku/586182

答案 1 :(得分:0)

IOS设备使用href =“tel:xxxxx”更改数字以锚定链接并弄乱json数据 http://xatzis.com/2014/03/29/submitting-forms-iframes-ios-devices/