2014-01-15 8 views
0

На веб-сайте с mydomain.tld встроена iFrame, содержащая форму, размещенную на otherdomain.tld. Оба сайта работают без SSL на порту 80.Отправить форму, встроенную в iFrame, не работает в iOS 7

Теперь эта форма не будет отправляться на iPhone 5, работающем на iOS 7. Я могу воспроизвести ее в iOS-симуляторе при выборе «iPhone Retina (4-inch 64) -бит) "(не только с" 4-дюймовым ").

Событие отправки инициируется (по крайней мере, если я его использую через JavaScript), но запрос не выполняется в соответствии с инструментами разработчика.

Если я открою источник iFrame напрямую, форма будет отправлена.

У меня была аналогичная проблема с Internet Explorer и узнал о P3P и может решить проблемы, отправив специальный P3P заголовок:

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

Но проблемы с упомянутой Safari это, кажется, не проблема ,

Существуют ли какие-либо известные ограничения в отношении Safari и форм в iFrames?

+0

Посмотрите здесь: HTTP: //stackoverflow.com/questions/19667785/iframe-and-mobile-safari-ipad-iphone – Zigglzworth

ответ

0

Как я выяснил, проблема связана с использованием файлов cookie в iFrames, которые вызвали Spamshield формы в iFrame, чтобы заблокировать отправку формы.

Поскольку это форма отказа, я дезактивировал Spamshield, но я нашел решение (которое я не тестировал), которое должно заставить cookie работать с помощью отправки в скрытую форму, которая запускается при загрузке iFrame.

<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

Смежные вопросы