1

カスタム JSF コンポーネントをレンダリングしています。メソッドencodeBeginに、いくつかの Java スクリプトを含めたいと思います。

public void encodeBegin(FacesContext context) throws IOException {
   ResponseWriter writer = context.getResponseWriter();
   writer.startElement("script", this);
   writer.writeAttribute("type", "text/javascript", null);
   writer.writeText("var width=400",null);
   writer.endElement("script");
}

コンポーネントをレンダリングするとき、スクリプト タグの内容はコメント アウトされます。

<script type="text/javascript"><!--
var width=400;
//--></script>

このコメントが表示される理由と、それを取り除く方法を誰か説明できますか?

前もって感謝します!

4

2 に答える 2

3

これは、JSF 仕様ではなく、MyFaces 実装に固有のものです。Mojarra 実装はそれを行いません。

<script>JavaScript の本文を HTML コメントに入れるというこのアプローチは、基本的に、要素をサポートしないブラウザーが存在したときの HTML の前史の名残りです。これらの HTML コメントは基本的に JavaScript コンテンツを隠し、古い HTML パーサーが JavaScript コードをプレーン テキストとして解釈して表示するのを防ぎます。

Mozilla Developer Network - Writing JavaScript for XHTMLも参照してください。

これは、JS に対応していないブラウザーからスクリプトを非表示にするために、HTML では一般的な方法でした。XML コメントの時代には、コメントが意図されていたもの、つまりコメントです。ファイルを処理する前に、ドキュメントからすべてのコメントが削除されるため、スクリプトをコメントに含めることは、ピラニア プールにランチを投げるようなものです。さらに、スクリプトをコメント アウトしても意味がありません。過去 10 年間に作成されたブラウザで、ページにコードが表示されることはありません。

最後の文に注意してください。これは非常に真実です。過去 10 年間に開発された単一のブラウザーでは、もはやそれを行うことはできません。MyFaces は、今日でもそのような先史時代のブラウザをまだ使用していると想定しすぎているようです。

于 2013-03-18T13:11:37.827 に答える
1

大丈夫です

慣例では、JavaScriptコードをコメントとしてマークするため、自動ツールはそれをHTMLとして解析しようとしません(たとえば、ページがHTML 4に準拠していることを確認するツール)。

/*JavascriptエンジンはHTMLコメントを無視し、コードを処理します(Javascriptコメントは//

CDATAこのアプローチのバリエーションは、同じ理由でJavascriptをタグ内に配置することです。

于 2013-03-18T12:40:09.767 に答える