4.4.9. 拡張スキニングサポートのクライアント側スクリプト
標準の HTML コントロールの拡張スキニングは自動的に適用されます。 ブラウザタイプが検知され、 ブラウザが拡張スキニングを完全サポートしない場合は基本スキニングが適用されます。
RichFaces コンポーネントや標準の HTML コントロールを手作業でスキンしたい場合、 ブラウザによっては (Opera や Safari など) 標準の HTML コントロールに問題があるため、 問題が発生することがあります。
Skinnability を無効にするには、 次のように
web.xml ファイルの org.richfaces.LoadStyleStrategy パラメータを NONE に設定します。
また、 RichFaces コンポーネントや標準の HTML コントロールにスキンを適用するスタイルシートが含まれるようにしてください。
Opera と Safari における拡張スキニングの問題を回避するには、 RichFaces ライブラリに
skinning.js クライアントスクリプトを追加します。 このスクリプトはブラウザタイプを検出し、 完全サポートするブラウザのみ拡張スキニングを有効にします。
ページに次の JavaScript を挿入し、スクリプトをアクティベートします。
<script type="text/javascript"> window.RICH_FACES_EXTENDED_SKINNING_ON = true; </script>
<script type="text/javascript">
window.RICH_FACES_EXTENDED_SKINNING_ON = true;
</script>
スクリプトの読み込みストラテジが使用されずに拡張スキニングが有効だと、コンソールに警告メッセージが表示されます。
また、
link タグに media 属性を指定する必要があります。 これは、 extended_both.xcss スタイルシートを rich-extended-skinning に追加します。
自動 Skinnability が無効になっている時にページにスタイルシートが含まれるようにするには、 次を追加します。
<link href='/YOUR_PROJECT_NAME/a4j_3_2_2-SNAPSHOTorg/richfaces/renderkit/html/css/basic_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf' type='text/css' rel='stylesheet' class='component' /> <link media='rich-extended-skinning' href='/ YOUR_PROJECT_NAME /a4j_3_2_2-SNAPSHOTorg/richfaces/renderkit/html/css/extended_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf' type='text/css' rel='stylesheet' class='component' /> <link href='/ YOUR_PROJECT_NAME /a4j_3_2_2-SNAPSHOT/org/richfaces/skin.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf' type='text/css' rel='stylesheet' class='component' />
<link href='/YOUR_PROJECT_NAME/a4j_3_2_2-SNAPSHOTorg/richfaces/renderkit/html/css/basic_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf' type='text/css' rel='stylesheet' class='component' />
<link media='rich-extended-skinning' href='/ YOUR_PROJECT_NAME /a4j_3_2_2-SNAPSHOTorg/richfaces/renderkit/html/css/extended_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf' type='text/css' rel='stylesheet' class='component' />
<link href='/ YOUR_PROJECT_NAME /a4j_3_2_2-SNAPSHOT/org/richfaces/skin.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf' type='text/css' rel='stylesheet' class='component' />
注記
これにより、 Base64 エンコーダが 「
.」 ではなく 「!」 を使用するようになるため、 a4j_versionXXX ではなく a4j/versionXXX をリソースプレフィックスとして使用するようにしてください。