
DOM标准里有个全局方法getComputedStyle,可以获取到当前对象样式规则信息,如:getComputedStyle(obj,null)paddingLeft,就能获取到对象的左内边距。但是IE不支持此方法,它有自己的一个实现方式,那就是currentStyle,不同于全局方法getComputedStyle,它是作为DOM元素属性存在的,如:objcurrentStylepaddingLeft,在IE中就获取到对象的左内边距了,兼容性的写法如下:
return windowgetComputedStyle windowgetComputedStyle(obj,null)paddingLeft : objcurrentStylepaddingLeft;
没有什么区别,就如同js代码可以直接写在下面这个标签内一样,可以省略type的内容
<script></script>而且实际中要 *** 作样式一般都比较复杂,用jQuery的几率更大。
所以不需要纠结这种问题
测试过,下面这样写有效果<div id="nav">改变字体颜色</div><div id="frm">第二个DIV</div>
<script>
var d=documentgetElementById('nav');
dstylecolor="red";
</script>
js代码写在下面才有效果,是因为网页是顺序向下执行,这段JS写在上面,独立执行,会找不到nav标签,可以用windowload=""来载入整个网页,然后再执行JS,这样修改:
<script>
windowonload=function(){
var d=documentgetElementById('nav');
dstylecolor="red";
}
</script>
<div id="nav">改变字体颜色</div><div id="frm">第二个DIV</div>因为float是Javascript的保留字,不能直接使用objstylefloat来使用,这样 *** 作是无效的。
其正确的使用方法是为:IE:objstylestyleFloat,其他浏览器Mozilla(gecko),ff等用styleFloat:objstylecssFloat。
例子:
<div onclick="alert(thisstylefloat); thisstylefloat='left'; alert(thisstylefloat);">测试1</div>
<div onclick="alert(thisstylefloat); if(thisstylecssFloat){thisstylecssFloat='left'; }else{thisstylestyleFloat='left'; }alert(thisstylefloat);">测试2</div>
需要准备的材料分别有:电脑、html编辑器、浏览器。
1、首先,打开html编辑器,新建html文件,例如:indexhtml,编写问题基础代码。
2、在indexhtml中的<script>标签,输入js代码:$('div')click(function () {$(this)css('color', 'blue');});。
3、浏览器运行indexhtml页面,此时点击123所在的div,div会变为蓝色文本。
判断原理:JavaScript是前端开发的主要语言,可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道。
浏览器类型
⑴浏览器特有属性
⑵根据userAgent
浏览器版本
⑴根据userAgent
对于手机浏览器判断
1如何判断是否为移动终端 利用正则match,
匹配navigatoruserAgent是否含有字符串AppleWebKitMobile
安卓qq浏览器HD版 只有AppleWebKit
2手机语言版本的判断
使用navigatorbrowserLanguage 便可得出windows phone语言版本,
当然可恶的小小手机语言版本也有兼容性的差异,兼容Mozilla,以及AppleWebKit内核的浏览器访问其语言版本,它会列出 navigatorlanguage
CODE:
<script type="text/javascript">
var browser={
versions:function(){
var u = navigatoruserAgent, app = navigatorappVersion;
return { //移动终端浏览器版本信息
trident: uindexOf('Trident') > -1, //IE内核
presto: uindexOf('Presto') > -1, //opera内核
webKit: uindexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: uindexOf('Gecko') > -1 && uindexOf('KHTML') == -1, //火狐内核
mobile: !!umatch(/AppleWebKitMobile/), //是否为移动终端
ios: !!umatch(/\(i[^;]+;( U;) CPU+Mac OS X/), //ios终端
android: uindexOf('Android') > -1 || uindexOf('Linux') > -1, //android终端或uc浏览器
iPhone: uindexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
iPad: uindexOf('iPad') > -1, //是否iPad
webApp: uindexOf('Safari') == -1 //是否web应该程序,没有头部与底部
};
}(),
language:(navigatorbrowserLanguage || navigatorlanguage)toLowerCase()
}
documentwriteln("语言版本: "+browserlanguage);
documentwriteln(" 是否为移动终端: "+browserversionsmobile);
documentwriteln(" ios终端: "+browserversionsios);
documentwriteln(" android终端: "+browserversionsandroid);
documentwriteln(" 是否为iPhone: "+browserversionsiPhone);
documentwriteln(" 是否iPad: "+browserversionsiPad);
documentwriteln(navigatoruserAgent);
</script>
比较特别的地方
UC浏览器没有安卓报头,只返回:linux ,这里粗略的根据linux来判断是安卓(前提必须满足是移动终端,UC这点是满足的)
安卓QQ浏览器HD版检测的结果是:mac, Safari 。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)