フレームセットを含むメイン ページがあります。これには 2 つのフレーム (フレーム a とフレーム b) があります。アプリケーション キャッシュ (HTML5) を使用して、メイン ページとフレームをキャッシュします。フレーム b は、通常の Web ページと同様に取得されるページです。
ページがキャッシュされると、Web リクエストを実行できないことがわかりました。したがって、フレーム a は Web リクエストを使用してデータを収集できませんが、フレーム b は収集できます。(jQuery を使用した通常の $.get または $.post)。
Frameset は HTML5 仕様で廃止されるため、これを設定する別の方法を探しています。iframe タグに行き着きます。iframe で設定されていますが、状況は同じです。
ここで、iframe にロードされた単一のページが常に iframe から Web リクエストを送信できないという問題に遭遇します。
セットアップ:
メインページ:
<!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
ここで、質問に行き着きます: 少なくとも 1 つの iframe をインターネットからロードしたままにして、他の iframe をキャッシュしておくことは可能ですか?
これにより、アプリケーションがスマートフォンやタブレットから実行されているときに、ぎこちない場所に持ち込まれる可能性がある場合でも、アプリケーションが可能な限りリアルタイムで親会社に情報を返すようにしたいと考えています。(地下室、家の下、大きな橋、または信号を妨害する可能性のあるその他の場所) 信号が失われ、後で復元された場合、ユーザーの操作なしで情報を送り返したいと考えています。このようなシナリオで、私たちはそれを機能させることができると考えています.
編集: Sandbox 属性のテスト パラメータを削除するように更新されました。