zoukankan      html  css  js  c++  java
  • 每日记载内容总结8

    1.判读浏览器类别:

    Browser = new Object();
       Browser.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument != 'undefined')? true : false;
        Browser.isIE = window.ActiveXObject ? true : false;
        Browser.isOpera = navigator.userAgent.toLowerCase().indexOf('opera') != -1;
        Browser.isSafari = navigator.userAgent.toLowerCase().indexOf('safari') != -1;
        Broeser.isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') != -1;

    另外一种方法:

     <script type="text/javascript">
            //jquery判断浏览器信息
            $(function(){
                var bro=$.browser;//获取浏览器用户代理信息;
                var bro_msie=bro.msie;//判断是否为ie浏览器,假如为ie浏览器就返回:true,否则返回:undefined;
                var bro_firefox=bro.mozilla;//判断是否为火狐浏览器;假如为火狐浏览器就返回:true,否则返回:undefined;          
     var isChrome=window.navigator.userAgent.indexOf("Chrome")>0 ? 'true' : 'false' ;//判断chrome
            });
    
            //原生javascript判断浏览器信息
            // 判断浏览器是否为IE,方法1
            var isIE=document.all ? 'IE' : 'others';//在IE下document.all值为1(true),而其他浏览器下的值为0(false);
    
            // 判断浏览器是否为IE,方法2
            var bro=navigator.userAgent;//获取浏览器用户代理信息;
            var isIE2=bro.indexOf("MSIE")>0 ? 'IE' : 'others';//在IE下bro.indexOf("MSIE")值大于1,而其他浏览器下的值小于0(一般为-1);
    
    
            //JS获取浏览器信息
            //浏览器代码名称:navigator.appCodeName
            //浏览器名称:navigator.appName
            //浏览器版本号:navigator.appVersion
            //对Java的支持:navigator.javaEnabled()
            //MIME类型(数组):navigator.mimeTypes
            //系统平台:navigator.platform
            //插件(数组):navigator.plugins
            //用户代理:navigator.userAgent
        </script>

    2.由于浏览器不同,js中的获取class的方法重写如下:

    function getElementsByClassName(n) {
        var classElements = [],allElements = document.getElementsByTagName('*');
        for (var i=0; i< allElements.length; i++ ){
            if (allElements[i].className == n ) {
                classElements[classElements.length] = allElements[i];
            }
        }
            return classElements;
        }

    传值给 js  onclick='toinquiry(<s:property value="#product.productId"/>)'

    3.关于lucene出现的错误Lock obtain timed out: NativeFSLock的解决方法:

    原因:没有及时关闭indexWriter 或者是indexReader,注意大括号以及代码逻辑

    代码:此方法用于关闭indexWriter

    private void closeIndexWriter(IndexWriter writer) {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (IndexWriter.isLocked(writer.getDirectory())) {
                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
    
                            IndexWriter.unlock(writer.getDirectory());
                        }
    
                        writer = null;
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }

    此方法用于关闭indexReader

        private void closeIndexReader(IndexReader reader) {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } 
            }
        }

    这二个方法需要放在外面,不然有可能在别的方法体内执行不了而没有关闭indexWriter

    4.父类对象与子类对象的转化

    对类进行造型转换的应参考以下原则:
    1.总是可以“父=子”赋值。此时不需要类型转换。
    2.可以执行类型转换“子=(子)父”,但需要运行时进行检查。如果父类变量引用的是正确的子类型,赋值将执行。如果父类变量引用的是不相关的子类型,将会生成class castException异常。
    如Father father= new Father();  Child child = (Child)father ;
    即:如果父类的实例是在子类的实例上塑造的,“子=(子)父”时就不会抛出异常。  
    如:
    A 是B的父类。
    A a= new B(); //父类A的对象a是在子类B的对象上塑造的。
    就可以:
    B b= (B)a;
    3.决不能在不相关的任何类之间执行类的赋值或者类型转换。即类的造型转换仅限于有继承关系的俩个类的对象之间。

     5.关于clear:both ;的理解和用法:

    CSS手册上是这样说明的:该属性的值指出了不允许有浮动对象的边。这个属性是用来控制float属性在文档流的物理位置的。

    当属性设置float(浮动)时,其所在的物理位置已经脱离文档流了,但是大多时候我们希望文档流能识别float(浮动),或者是希望float(浮动)后面的元素不被float(浮动)所影响,这个时候我们就需要用clear:both;来清除。

    比如

    <p style="float:left;200px;">这个是第1列,</p>
    <p style="float:right;400px;">这个是第2列,</p>
    <p>这个是第3列。</p>

    清除浮动,让文档流识别前二个P标签,然后再继续第三个P标签,可以如下进行设计

    <p style="float:left;200px;">这个是第1列,</p>
    <p style="float:left;400px;">这个是第2列,</p>
    <div class="clear"></div>
    <p>这个是第3列。</p>

    对于因多加的<div class="clear"></div>标签会引起IE和FF高度变化,通过如下方法解决:

    .clear { 
         clear: both;
         height:1px;
         margin-top:-1px;
         overflow:hidden;
    }
  • 相关阅读:
    闭包
    值类型和引用类型的区别?
    计算机基础知识和基本操作
    Git常用命令
    任务八
    CSS任务七
    CSS任务六
    MySql+EF6,不能选实体框架6.x或者闪退
    以一定的格式生成最新的数据库流水号
    layui父窗体获取弹出窗体元素
  • 原文地址:https://www.cnblogs.com/cuiyf/p/3079815.html
Copyright © 2011-2022 走看看