博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

浏览器兼容相关问题记录

Posted on 2008-11-24 20:53  a-peng  阅读(580)  评论(0编辑  收藏  举报
http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm浏览器兼容真的会让人吐血,最近都是使用 Firefox3.0 + IETab 用来测试兼容 Firefox与IE,可是在电脑上的IE8 beta2上跑跑又罢工了。唉。。。感叹一下!!!写下此篇,记录遇到的一些兼容问题。

开始先抱怨下Firefox3.0的bug:不支持智能ABC输入法,我从五笔切换为智能ABC时Firefox3.0就会被强制关闭。
刚刚又一次。。。

一、透明度
支持大多数浏览器:filter:alpha(opacity=50); -moz-opacity: 0.6; opacity: 0.6;
不过IE8 beta2下无效。
需要将<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">删除掉。

二、取文档高度
文档高度,就是包括可见部份和不可见部份(不可见也就是拉下滚动条能看到的地方)。
var width = document.body.scrollWidth;
var height = document.body.scrollHeight;
很意外的都兼容。

三、input:hover的问题(未解决问题)
input{background:#000000;}
input:hover{background:#ff0000;}
在Firefox3.0下有效,不过在IETab和IE8 beta2下都无效。。。

四、刷新框架
IE支持 window.top.frames[0].location.reload() 与 window.top.frames["topFrame"].location.reload()的写法
不过Firefox3.0 只支持window.top.frames[0].location.reload()

在这里顺便提一下:Asp.Net注册脚本确实很方便。
记得以前都是Response.Write("<script language=""javascript"" type=""text/javascript"">" + 脚本 + "</script>"); 这种方式不紧麻烦而且低效,如果该脚本需要多次发往客户端,那对带宽真的是种浪费。

启动就执行的注册方式:
String key = "RELOAD_TOPFRAME"; // 刷新topFrame脚本key
String script = "window.top.frames[0].location.reload();"; // 刷新topFrame脚本script

if (!ClientScript.IsStartupScriptRegistered(key))
ClientScript.RegisterStartupScript(this.GetType(), key, script, true); // true为启动脚本

五、trim()函数
javascript中并没有提供trim()函数,但是这个函数又太常用了。怎么办呢?我们自己提供一个吧。

String.prototype.trim= function() {
return this.replace(/(^\s*)|(\s*$)/g,"");
}

正则表达式说明:\s 表示匹配任意空白字符 ^ 表示开始 ^\s* 表示匹配开始的连续空白字符
$ 表示结尾 \s*$ 表示匹配结尾的连续空白字符。
(^\s*)|(\s*$)表示匹配开始连续空白和结尾连续空白。
g 表示全局,不加g只匹配到第一个就结束,加上g会继续匹配下去。

正则表达式相关可参看 (正则表达式30分钟:http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm