Наша ситуация:
У нас есть главная страница с набором фреймов. Это имеет 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?
Мы хотим, чтобы это обеспечивало передачу приложением как можно большей информации в реальном времени материнской компании, в то время как приложение запускается со смартфона и / или планшета, которые могут быть доставлены в неудобные места. (Подвалы, дома, большие мосты или любое другое место, которое может помешать сигналу) Если сигнал потерян и позже восстановлен, мы хотим отправить информацию обратно, без действий пользователя. С таким сценарием мы думаем, что сможем заставить его работать.
Редактировать: Обновлено, чтобы удалить параметры тестирования атрибута Песочница.