0

在带有 的网站中,嵌入mydomain.tld了包含托管表单的 iFrame 。otherdomain.tld这两个站点都是在端口 80 上运行的非 SSL。

现在,此表单不会在运行 iOS 7 的 iPhone 5 上提交。我可以在选择“iPhone Retina(4 英寸 64 位)”时在 iOS 模拟器中重现它(“4 英寸”不会发生)只要)。

提交事件被触发(至少如果我通过 JavaScript 捕获它)但没有根据开发人员工具发出请求。

如果我直接打开 iFrame 源,表单将提交。

我在 Internet Explorer 上遇到了类似的问题,并且了解了P3P,并且可以解决发送特殊 P3P 标头的问题:

P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"

但是对于 Safari 提到的问题,这似乎不是问题。

Safari 和 iFrame 中的表单是否有任何已知限制?

4

2 回答 2

0

正如我发现的那样,问题与在 iFrames 中使用 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

于 2014-01-30T16:13:38.040 回答
0

IOS 设备将数字更改为带有 h​​ref="tel:xxxxx" 的锚链接并弄乱 json 数据 http://xatzis.com/2014/03/29/submitting-forms-iframes-ios-devices/

于 2014-03-29T09:20:41.840 回答