5

スクリプトをエスケープするためにCDATAを使用していますが、IE8のデバッガーでは、forループ条件で「Expected')'」というメッセージが表示されます。私はそれがまだそれを考えていると思います; <CDATAによって生成されたでループ条件を終了しています。

XSLテンプレートの元のスクリプト:

<script type="text/javascript" language="javascript">  
<![CDATA[
    function submitform(form){
        var oErrorArray = new Array();
        for (i=0;i<form.length;i++) 
        eval("oErrorArray["+i+"]=oError"+i);
        var goForm = true;
        for(i=0;i<form.length;i++) {
            oErrorArray[i].innerHTML = "";
            if(form[i].value="")){
                oErrorArray[i].innerHTML = "Error - input field is blank";
                goForm = false;
            }           
        }
        if(goForm == true) form.submit();
    }
    function resetform(form){
        form.reset();
    }
]]>
</script>

変換後に生成されたコード(IE8デバッガーから)

<script type="text/javascript" language="javascript">
    function submitform(form){
        var oErrorArray = new Array();
        for (i=0;i&lt;form.length;i++) 
        eval("oErrorArray["+i+"]=oError"+i);
        goForm = true;
        for(i=0;i&lt;form.length;i++) {
            oErrorArray[i].innerHTML = "";
            if(form[i].value="")){
                oErrorArray[i].innerHTML = "Error - input field is blank";
                goForm = false;
            }           
        }
        if(goForm == true) form.submit();
    }
    function resetform(form){
        form.reset();
    }
</script>

IE8デバッガーによって報告されたエラー:予期される')' login.xml、29行目文字30 (最初の "form.length"の直後)

4

1 に答える 1

3

出力エスケープを明示的に無効にする必要があります。

http://www.w3.org/TR/xslt#disable-output-escaping

カイルがコメントで述べているように、特にあなたはする必要があります

(1)CDATAタグを削除して

(2)<xsl:text disable-output-escaping="yes">&lt;</xsl:text>文字をエスケープしないようにする必要がある場所に挿入します。

于 2010-06-14T05:44:08.823 に答える