每日记载内容总结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;width:200px;">这个是第1列,</p>
<p style="float:right;width:400px;">这个是第2列,</p>
<p>这个是第3列。</p>

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

<p style="float:left;width:200px;">这个是第1列,</p>
<p style="float:left;width: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;
}

 

posted @ 2013-05-15 14:35  CalronLoveRonnie  阅读(205)  评论(0编辑  收藏  举报
AmazingCounters.com