JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

SafariでHTML5 AppCache利用時にクロスサイトCSSが正しく読み込まれない原因と対処法

HTML5のAppCache(アプリケーションキャッシュ)は、ブラウザが現在表示しているページに関連するファイルをサイト上に明示するために使われる仕組みです。しかし、Safariでは他のブラウザと異なる挙動により、外部ドメインのCSSなどが正しく読み込まれないケースがあります。

なぜSafariでクロスサイトCSSが読み込めないのか

SafariはAppCacheの標準仕様をより厳密に解釈します。そのため、マニフェスト(キャッシュ対象リスト)に記載されていないWebアドレスへのリクエストを検出すると、そのリクエストをブロックしてしまうのです。結果として、別ドメインから読み込んでいるCSSやその他のリソースが適用されなくなります。

対処法:NETWORKセクションにワイルドカードを指定する

この問題を回避し、リクエストがブロックされないようにするには、マニフェストファイルのNETWORK:セクションに以下のように記述します。

NETWORK:
*
https://*
https://*

*およびhttps://*https://*を指定することで、AppCacheに登録されていないすべてのオンラインリソースへのアクセスが許可されます。これにより、クロスサイトのCSSやスクリプトもSafariで正しく読み込めるようになります。

まとめ

SafariはAppCacheの仕様に厳格なため、マニフェスト外のリソースへのリクエストが拒否されることがあります。外部リソースを利用する場合は、NETWORK:セクションにワイルドカードを追加して、必要なリクエストがブロックされないよう設定しましょう。

  1. CSSだけでブラウザウィンドウを再現する方法!サンプルコード付きで解説

    CSSを使えば、実際のブラウザウィンドウのような見た目をWebページ上に簡単に再現できます。本記事では、macOS風のウィンドウボタン(赤・黄・緑のドット)やURL入力欄まで含めた、リアルなブラウザウィンドウUIをCSSのみで作成する方法を、完全なサンプルコードとともに解説します。 完成形のイメージ 今回作成するのは、閉じる・最小化・最大化のウィンドウボタン、アドレスバー、右側のメニュードットを備えたブラウザウィンドウです。HTMLとCSSだけで構成されており、JavaScriptは一切不要なので、初心者の方でもすぐに試せます。 サンプルコード 以下がブラウザウィンドウを実現するコード全体です

  2. CSSのメディアクエリを活用したレスポンシブWebデザインの基本と実装例

    メディアクエリとは メディアクエリ(Media Queries)は、CSSで提供される技術の一つで、スマートフォン、タブレット、デスクトップPCなど、デバイスの画面サイズに応じて異なるスタイルルールを適用できる仕組みです。 これにより、単一のHTMLファイルであらゆる画面幅に対応したレスポンシブWebデザインを実現できます。ブレークポイント(画面幅の境界値)ごとに条件を指定し、その条件が一致した場合のみCSSが適用されるのが特徴です。 主な構文のポイント @media only screen and (max-width: 600px) … 幅600px以下の画面に適用 @media onl