HTML5 Сделать веб-запрос из кэшированного iframe - PullRequest
1 голос
/ 09 января 2012

Наша ситуация:

У нас есть главная страница с набором фреймов. Это имеет 2 кадра (кадр а и кадр б). Используя кэш приложения (HTML5), мы кешируем главную страницу и создаем фрейм a. Кадр b - это страница, которая извлекается как любая веб-страница.

Теперь мы выяснили, что когда страница кэшируется, она не может выполнять веб-запросы. Поэтому кадр a не может собирать данные с помощью веб-запроса, кадр b может. (Просто обычный $ .get или $ .post, использующий jQuery).

Поскольку Frameset устарел со спецификацией HTML5, мы ищем другой способ его настройки. Итак, мы подошли к тегу iframe. Ситуация все равно будет такой же, хотя и в фреймах.

Теперь мы сталкиваемся с проблемой, заключающейся в том, что всякий раз, когда в iframes загружается одна страница, ни один iframe не может сделать веб-запрос.

Настройка:

Главная страница:

<!DOCTYPE html>
<html manifest="CacheManifest3.ashx">
<head>
    <title>Testpage for frames</title>
</head>
<body>
    <iframe height="200px" width="200px" style="position: relative; background: blue;" src="frame_c.html" ></iframe>
    <iframe height="200px" width="200px" style="position: relative; background: Yellow;" src="frame_d.html" ></iframe>
</body>

</html>

Кадры a и b (единственная разница - это a и b):

<script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<p>Frame a</p>

<script>
    function doclick()
    {
        $.post( "WebServices/SiteWebService.asmx/Test", null, function ( data )
        {
            alert( 'Done! ' + data );
        } );
    }
</script>

<button onclick="doclick();">Click for webrequest</button>
<button onclick="alert( 'Alert!' );">Click for alert</button>

Манифест кэша:

CACHE MANIFEST
#v1
CACHE:
Frametest2.html
frame_a.html

Теперь перейдем к вопросу: возможно ли сохранить хотя бы один iframe, загруженный из Интернета, в то время как другие кэшируются, так что все еще можно делать веб-запросы из этого единственного iframe?

Мы хотим, чтобы это обеспечивало передачу приложением как можно большей информации в реальном времени материнской компании, в то время как приложение запускается со смартфона и / или планшета, которые могут быть доставлены в неудобные места. (Подвалы, дома, большие мосты или любое другое место, которое может помешать сигналу) Если сигнал потерян и позже восстановлен, мы хотим отправить информацию обратно, без действий пользователя. С таким сценарием мы думаем, что сможем заставить его работать.

Редактировать: Обновлено, чтобы удалить параметры тестирования атрибута Песочница.

...