您的位置:首页 > 其它

每日记载内容总结8

2013-05-15 14:35 309 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: