javascript - jsp中注释掉的代码为什么还会起作用

查看:103
本文介绍了javascript - jsp中注释掉的代码为什么还会起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<!--

function init() {

    if (${! SME230FormBean.viewFlg && ! SME230FormBean.rawFlg}) {

        inputChk_disableMinMax('${SME230FormBean.inChk_selChkType}');

        <logic:notEmpty name="SME230FormBean" property="inChk_selCharKindType">
            <logic:iterate id="inChk_selCharKindType" name="SME230FormBean" property="inChk_selCharKindType">
                <c:if test="${inChk_selCharKindType == 'ALL'}">
                    inputChk_SelCharKindAll('ALL');
                </c:if>
            </logic:iterate>
        </logic:notEmpty>

        inputFld_disabled('${SME230FormBean.inFld_selFldType}');

        defVal_disabled('${SME230FormBean.defVal_selUseType}');
    }
    
    if (${! SME230FormBean.viewFlg && SME230FormBean.rawFlg}) {
        inputFld_disabled('${SME230FormBean.inFld_selFldType}');
        defVal_disabled('${SME230FormBean.defVal_selUseType}');
    }

    viewFmt_disabled('${SME230FormBean.viewFmt_selUseType}');
    default_disabled('${SME230FormBean.default_selUseType}');
}

//-->

以上代码是jsp中的。

<td>
                <html:radio name="SME230FormBean" property="default_selUseType" value="0" onclick="default_disabled('0');" ><bean:message key="SME230.sequ.nouse" bundle="mi"/></html:radio>
                <html:radio name="SME230FormBean" property="default_selUseType" value="1" onclick="default_disabled('1');" ><bean:message key="SME230.sequ.usesequ" bundle="mi"/></html:radio>
                <html:radio name="SME230FormBean" property="default_selUseType" value="2" onclick="default_disabled('2');" ><bean:message key="SME230.sequ.useinde" bundle="mi"/></html:radio>

                <html:select name="SME230FormBean" property="default_selFmtType" styleClass="selectBox2">
                    <html:optionsCollection name="SME230FormBean" property="default_pullDownList"/>
                </html:select>
            </td>



以上是jsp中的引用代码


function default_disabled(val){

    var form = document.forms[0];

    if(val == '0'){
        
        form.default_selFmtType.disabled = true;
    }else if(val == '1'){
        
        form.default_selFmtType.disabled = true;
    }else if(val == '2'){
        
        form.default_selFmtType.disabled = false;
    }

}

以上是onclick事件触发的js动作。

这是一段写在jsp中被注释掉的代码,最后两行是用来做一个下拉框的初始设定,控制初始时下拉框是活性的还是非活性的。
如果没有末尾的两行代码,js就不会起到应有的作用。不明白为什么备注是的代码还会起作用,求指教。

解决方案

这种用法是一种以前的老技巧,现在有时候还能看到,但已经不常用了。

在浏览器的上古时代,各种浏览器对JS的支持各不相同,很多浏览器压根不支持JS,所以那些支持浏览器的厂商就制定了这么一种策略,在<script>标签中的<!--会被忽略,而//-->由于用了JS注释,所以也不会起作用,因此对支持JS的浏览器来说这两行并没有起到注释的作用。但是对不认识JS的浏览器来说就不一样了,它们会把<!--当做HTML注释,然后由于不认识JS,所以最后的//-->也并不会被当做JS注释,结果就是所有JS代码都被当成了HTML注释看待,变成普通的注释文本了。

那时候,JS通常只是用来实现一些花哨的效果,表单验证时代都还没有开始,所以有没有JS实际上关系并不是很大,顶多就是没那么好看而已。

其实这种用法现在还有,比如严格模式就是由"use stric"这么一个字符串表示的,对于不支持严格模式的JS引擎来说这就是一个普通的字符串,但反之则是开启严格模式的命令。其他的例子还有IE注释等,都是用的这种策略。

这篇关于javascript - jsp中注释掉的代码为什么还会起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆