博文

目前显示的是标签为“技巧”的博文

让Chrome真正的开始使用微软雅黑字体

因为最近发现MacType的显示效果不错,所以一直在摸索它的相关设置。 结果发现Chrome下MacType的显示效果很糟糕,原因就在于它对宋体的渲染很糟糕,只是对微软雅黑做了渲染处理。但是直接修改Chrome的设置中的字体选项,将默认字体调整为微软雅黑,这是没有用处的。Chrome只是修改了那些没有在Css中定义Font -family的字体的样式,将它们改为了微软雅黑,这明显是还不够的。 搜索发现 这里 提供了一个方案: 访问本地计算机的 %UserProfile%\AppData\Local\Google\Chrome\User Data\Default\User StyleSheets\Custom.css 然后添加: *{font-family:Arial,"Microsoft Yahei";} 但是这时候出现一个问题,那就是……Chrome依然我行我素的显示宋体 后来摸索发现,他的CSS语句写错了,因为Custom.css是默认最开始就加载的,所以会被后来的CSS文件中的定义覆盖掉,故而没有实际作用。真正的方法是加入以下语句: *{font-family:Arial,"Microsoft Yahei" !important;} 这样就可以了。

终于解决了HP 1010打印机在Windows 7和Windows 2008 R2下反应缓慢的问题

Windows 7家族整体的表现都不错 特别是Windows2008是相当的稳定的一个好东西,当然,这个可能也与它是64bit的版本有关系了 但是白玉微瑕的地方就是在于驱动支持的很少,至少明确的表示支持Windows2008 R2的普通硬件基本上是没有的. 但是好在大多数的硬件都可以直接使用Windows7或者Windows Vista的硬件驱动,所以影响较小.但是这台老式的HP1010激光打印机就有点够呛了. 虽然可以装上驱动使用,但是其使用效果就是从点击打印到开始打印中间需要间隔接近半分钟,而且,每打一张纸还要休息5秒钟...简直是让人无法忍受 忍受了接近三个月之后我终于崩溃了,上网找解决方案.终于让我找到了解决的办法 具体方法操作也很简单: 打开 硬件管理器,选择那个老式的IEEE 打印支持那个选项,然后右键选择更新驱动程序,然后不要选择,自己从列表中选择"USB打印支持",然后进入打印机的项目中右击选择"打印机属性"然后在"端口"选项卡中将端口换成"USB001",这个问题就解决了. 不过启动还是稍稍有点慢,不过至少中间不会休息那么久了. 不过据说有更方便的办法就是进入打印机的项目中右击选择"打印机属性"然后在"高级"选项卡中选择"新驱动程序"然后在下一步中选择HP的LaserJet 1015,然后一路的确定就可以解决 不过这个方法我没有测试过,也不知道是否能够在64bit下生效.

终于知道了Foobar2000不读取UTF-8的CUE文件的原因

我就说原本是支持的嘛,它比千千静听还要更早支持UTF-8编码的,怎么到现在就怎么也不支持了,放进去之后它就显示两个问号.. 后来查明原因是它所支持的UTF-8是UTF-8 BOM(Byte Order Mark)格式,把CUE文件保存成为这个格式就可以了. 相关信息: Wiki中关于BOM

不会拿来主义的程序员不是好程序员

之前虽然我一直以自己写为主,很少用别人现成的API,但是我也深知,仅仅只是依赖于自己的手工劳动这样虽然在很大程度上保证了代码量的精简和高速,但是在大批量的编程和大项目上是无法胜任的,好的程序员必须要快速的能够把别人现成的可以用的东西拿过来用,而不是拘泥于自己去写。 于是这次在写这个局内部的管理程序的时候,我更多的想到是API,首先确定要玩的是JQuery这个大名鼎鼎的Javascript API,于是找来了它的中文参考手册( 这里 ),研究了一下发现,这个家伙确实提供了很多简化的写法,虽然并不是非常的困难,但是如果用在编程上,确实减少了很多的代码书写量。 然后为了实现类似Google的Serach Suggest功能,使用了Jquery Autocomplete( 这里 )。这个家伙相当的强大,可以非常轻易的实现单词自动补完甚至可以实现拼音首字母的快速检索。这里有详细的手册。 其次用到了 TipsWindow ,一个基于Jquery的浮动层API,提供了相当强的设置和功能。 同时,在研究它的代码的时候,我发觉,它和我之前看Google 的Gmail一样,采用了一张大的背景图,把所有的背景和图标都集中了在里面……这个难道有什么蹊跷么?我最初怀疑是可以便于客户端缓冲,但是考虑一下明显不可能,因为客户端载入一张小图片当然比载入一张大图片要大,那为什么都采用这样的设置,而使用CSS的图片分割功能呢? 求助于Google终于知道,这样的最大的好处就是可以减少HTTP服务器的Request量,因为HTTP在高并发的时候对Request的数量相当的敏感,这就和我们拷贝小文件数量越多越慢一样,如果全部压缩成RAR一次性拷贝可能只需要几秒,但是分开来的几千甚至几万个小文件甚至可以用上几十分钟才能拷贝完。 另外不得不记一笔,之前曾经解决过同样的问题但是因为没有记录最后自己也忘了怎么解决的了。 很简单的JavaScript的字符串查找替换为问题,很简单的使用replace方法就可以了,但是关键是那个用来匹配的正则表达式对象,那个并不是字符串,如果是字符串的话匹配一定不成功,在类型中它准确的类型应该是Function,而并不是String。 这样就导致了一个问题,在匹配的字符串不断的改变的情况下你无法简单的用字符串连接的生成一个Function啊! 结果最后还是自己发现了最初这个函数在讲解...

QQ的阅读空间什么时候也获得了穿墙而过的能力了?

刚和小裤裤聊起最近玩的阅读器。 最近一直在醉心于阅读器,因为晚上回家已经不能上网了,所以只能靠手机玩,但是手机上论坛也没有太多的人,上普通的Wap网页资讯量太少,于是最方便的东西还是变成了Google阅读器。毕竟它的移动版是相当的方便的。 最初我使用Google Reader只是出于它的HTTPS版可以非常轻易的翻墙,虽然无法发表评论,但是大多数的东西只需要看看就可以了嘛。之后因为Buzz的出现,Reader的分享让我发现了它的亮点,所以最近也算是收集了不少RSS订阅点,基本上每天都在看不完的状态中。 但是裤衩子却说他更加偏爱QQ的阅读器,这东西其实被叫做阅读空间,是QQ的邮箱中的一个小项目位于QQ邮箱的最下方,于是我就开始夸耀Google Reader的翻墙能力是QQ阅读空间所不及的,最初,确是让裤衩子惊讶了一番,结果他随便测试一番,居然发现QQ阅读空间订阅我的Blog都可以完全行得通,其他的海外被墙的比如BBC中文频道,FeedBurner之类也全部都可以……OTL 这才是见了鬼了,QQ的阅读器是怎么穿墙而过的?难道是QQ也有海外版的服务器?更加可怕的是因为QQ的Mail服务器在国内,所以甚至都不需要HTTPS加密就可以平稳的穿越GFW,就算是有关键字也毫不惧色(因为GFW无法管理墙内的问题……OTL),这难道是就是QQ邮箱的登陆界面左边图片的意义么? 1987年9月14日21时07分 中国第一封电子邮件 从北京发往德国 “越过长城,走向世界” 现在我突然顿悟了……

AIX下关于Oracle的几个命令(转)

AIX的帮助: IBM官方 常用命令 软件包 CPU :vmstat、iostat、sar、bos.acct I/O :topas、svmon、filemon、fileplace、bos.perf.tools MEMORY :vmtune、schedtune、bos.adt.samples NETWORK :netstat、bos.net.tcp.client vmstat报告CPU与内存信息 如下例所示: System configuration: lcpu=4 mem=3936MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 1 603967 1064 0 0 0 0 0 0 5 1619 85 0 0 99 0 内核线程 r 表示内核中运行的线程数,如果其数超过系统的CPU个数,则说明等待进程越多 b 表示内核中等待的线程数,由于挂起或IO等待 内存列 pi 列 表示每秒钟从Paging Space置换到内存的页数。 po列 表示每秒钟从内存置换到Paging Space的页数。 如果这两列持续大于5,则系统的性能瓶颈很可能是内存不足,而导致交换频繁。 fr列 表示每秒钟页面置换算法释放的页数。 sr列 表示每秒钟页面置换算法检查的页数。 故障列 in 设备中断次数 sy 系统调用次数 cs 内核线程上下文交换,即时间片用完后,再轮到时的上下文计算,如果太高,则要仔细观察 内存信息 avm与free两项分别表示了物理内存的活动页数(active Memory)与可用页数(每页4096bytes),其大小可用其值/256获得MB数。 其中free数如果持续为0或很低则预示内存不足,此时可能会导致大量的页面交换,而在CPU中显示为wa很高,此值的多少也与vmtune中的-f -p设置有关。 CPU信息 在以上信...

XSL继续学习

继续总结一些XSL中比较实用的经验: 1.多用用属性比直接增加节点来的方便,也更加爱节约流量,但是属性中无法增加CDATA,所以必要的节点还是必要的 2.在XSL中所有的HTML必须要转义,特别用的多的有&要写成&amp,空格应当写成&#160; 3.输出XSL中的CDATA必须要用到JS才可以跨浏览器 <div id="test"><xsl:value-of disable-output-escaping="yes" select="//node"/></div> <xsl:if test="system-property('xsl:vendor')='Transformiix'"> <script language="JavaScript"> var el = document.getElementById("test"); el.innerHTML = el.lastChild.data; </script> </xsl:if> 其实很简单的一个东东,从上面的一个节点处取得这个节点的值,然后用innerHTML方法把它塞回元素里面,于是就能完整显示了,上面那个if test="system-property('xsl:vendor')='Transformiix'"其实是在测试浏览器是否是FF,因为IE直接就用disable-output-escaping="yes"这个属性让HTML直接输出了.

JavaScript基础

跨浏览器、跨语言 文档对象模型是一种 W3C 标准。因此,所有现代 Web 浏览器都支持 DOM —— 至少在一定程度上支持。虽然不同的浏览器有一些区别,但如果使用 DOM 核心功能并注意少数特殊情况和例外,DOM 代码就能以同样的方式用于任何浏览器。修改 Opera 网页的代码同样能用于 Apple's Safari®、Firefox®、Microsoft® Internet Explorer® 和 Mozilla®。 DOM 也是一种跨语言 的规范,换句话说,大多数主流编程语言都能使用它。W3C 为 DOM 定义了几种语言绑定。一种语言绑定就是为特定语言定义的让您使用 DOM 的 API。比如,可以使用为 C、Java 和 JavaScript 定义的 DOM 语言绑定。因此可以从这些语言中使用 DOM。还有几种用于其他语言的语言绑定,尽管很多是由 W3C 以外的第三方定义的。 本系列文章主要讨论 JavaScript 的 DOM 绑定。这是因为多数异步应用程序开发都需要编写在 Web 浏览器中运行的 JavaScript 代码。使用 JavaScript 和 DOM 可以即时修改用户界面、响应用户事件和输入等等 —— 使用的完全是标准的 JavaScript。 总之,建议您也尝试一下其他语言中的 DOM 绑定。比如,使用 Java 语言绑定不仅能处理 HTML 还可处理 XML,这些内容将在以后的文章中讨论。因此本文介绍的技术还可用于 HTML 之外的其他语言,客户端 JavaScript 之外的其他环境。 节点的概念 节点是 DOM 中最基本的对象类型。实际上,您将在本文中看到,基本上 DOM 定义的其他所有对象都是节点对象的扩展。但是在深入分析语义之前,必须了解节点所代表的概念,然后再学习节点的具体属性和方法就非常简单了。 在 DOM 树中,基本上一切都是节点。每个元素在最底层上都是 DOM 树中的节点。每个属性都是节点。每段文本都是节点。甚至注释、特殊字符(如版权符号 ©)、DOCTYPE 声明(如果 HTML 或者 XHTML 中有的话)全都是节点。因此在讨论这些具体的类型之前必须清楚地把握什么是节点。 节点是…… 用最简单的话说,DOM 树中的任何事物都是节点 。之所以用 “事物” 这个模糊的字眼,是因为只能明确到这个程度。比如 HTML 中...

Debian摸索中

确实是在摸索中 昨天刚刚下载安装的最小化ISO,用的Vmware6安装的. 因为网络环境复杂,一开始就卡在了代理服务器的设置上面 因为无法使用代理,apt都无法使用 后来好不容易更改了apt的设置 在/etc/apt/apt.conf中加入了以下两行: Acquire::http::Proxy "http://用户名:密码@IP:端口/"; Acquire::ftp::Proxy "ftp://用户名:密码@IP:端口/"; 结果发现route设置有问题 在Windows下只需要简单的设置getway的问题在Linux下则必须要麻烦的使用route命令来完成了: route add default gw IP地址 结果到最后重启两次觉得不对劲...我不是最初安装的时候设置了IP和网关了么?为什么到现在又提示我不正确了? 跑到etc/network/interfaces下寻找结果,发现配置文件被我填写的时候写错了,把0写成了1...orz 完整的配置文件应该是: auto lo eth0 inface lo inet loopback allow-hotplug eth0 iface eth0 inet static address xxxxx netmask xxxxx broadcast xxxxxxx getway xxxxxx 之后发现一点使用上的小问题 就是默认使用的是sh而不是bash,默认用的vi而不是vim,让我很痛苦...orz 于是,再次修改配置文件: ~/.bashrc 修改其中的条目: export PS1='\u@\h:\w\$ ' alias vi='vim' alias ls='ls --color=auto -NF --show-control-chars' 同时顺手,把Debian变成中文版好了 修改~/.profile LANG=zh_CN.utf8 LANGUAGE=zh_CN.utf8 source ~/.bashrc

今天碰到的疑难杂症&解答

同事给过来一个U盘,是前几天我用过了的,当时尝试着拿这个东西从U盘启动然后直接安装系统,所以拿USBoot格式化成HDD模式启动,结果没成功,于是就还给他了.当时也没仔细的看,结果今天他拿过来的时候说容量变成了2G了...orz 果然,插上去一看容量变成2G了...打开Windows的管理控制台-磁盘管理,发现8G的内容还在,但是只有一个2G的空间被分区了,而且是主引导扇区,剩下的还有5G多的空间,可以看得到,但是无法格式化..我试图用磁盘管理器来删除之前的2G的空间,但是这个选项是黑色的,只能格式化,格式化之后容量依然保持在2G没变. 于是我甚至开始怀疑这块USB是扩容的了....但是后来证明是错误的,扩容的U盘看样子是8G的,但是可能实际并没有那么大,而且绝对是无法装下超过它原有容量的数据的,而这块U盘实际上曾经装过6G左右的东西,而且在磁盘管理中可以看到那5G的空间,说明这个U盘并不是扩容的,而结症还是在分区上. 于是我去下载了PartitionMagic,老牌的分区软件了,但是安装上去之后发现,竟然完全无法识别到我那块USB...无奈之下只能歇工了,到网上到处找其他的软件看看有没有别的解决方案. 到最后突然想到,是不是USBoot捣的鬼,既然是它这么做的,能不能也能用它把这块U盘恢复?抱着尝试的心态重新开启了USBoot,选择了"用0重置参数",操作过了一段时间后,重新插上U盘,系统识别为"未格式化的驱动器"容量显示为8G...OK,这就完成了... 原因大概就是之前用过了USBoot这个软件制作了启动U盘,可能是因为FAT最高到2G的缘故,所以它默认的划出来了一个2G的空间作为启动盘.剩下的空间就被废黜了. 于是只能再用USBoot重置U盘的分区信息,把整个U盘变成未格式化状态,再格式化一次就好了.

有時候看看別人写的程序,感觉自己也有不少的提高

比如昨天调教Blogger的模板中的CSS,其实只是去掉几个虚线框和更换一下title的图片,但是却意外的发现在Blogger的CSS中很少直接指定hight值,绝大多数都是用Padding和Margin来撑起来全部的页面,让页面可以随着字数的变化而变化,不至于把原有的高度撑开.... 在处理浮动问题上,也是很小心的注意到了IE和FF的不同,利用一些小的hack来解决比如/* */:/**/,而在我之前的程序中,很多时候重复定义了太多的东西,比如定义了padding和margin,又把high和width定的死死的,导致文字改变了的时候就把原有的布局撑开了,直接导致FF和IE下的显示出现截然不同,毕竟你无法规范每个浏览器在处理违规的操作上的不同,你只能把各种的可能性都考虑在自己所限定的范围内.这个应该就是Blogger的Web Designer的思考的方式吧. 但是唯一有个小问题就是:为什么我昨天只是改动了了一点布局而已,在"页面元素"这个栏目中的"博客帖子"一栏就变得无比的巨大,甚至全屏了,我确定我的CSS并未改动太多啊,只是改动了三个宽度值和Title的Padding值而已...虽然功能并未太多的改变,但是总感觉不爽的样子....不过算了,可能是程序本身的BUG了,外观显示没有问题就行了- -

Firefox 3.1初接触

虽然Firefox的3.1版早就进入了测试版阶段了,也了解了不少的相关的改变的内容,对这些改变也非常的感兴趣,但是却一直没有什么太大的冲动去尝试,毕竟一直停留在Alpha测试阶段,这些天,终于看到了Beta1露面了,于是再次的...当小白鼠.... 首先是下载地址: 点这里 (如果下不下来就用迅雷下~) 安装完毕之后,自然是...除了更新的最勤快的Adblock Plus还能继续使用之外,其他的统统挂掉了... 我用Firefox一直追求一种平滑过渡的感觉,也就是说希望可以保持我在TheWorld上的各种习惯,包括鼠标拖拽搜索和打开新页面以及鼠标手势和单窗口浏览等等.于是,装完的第一件事情还是变成了去寻找插件的旅程. Adblock Plus 最常用,更新的最迅速的FF反广告插件,几乎是跟着Firfox的测试版一路更新的,我一直都很佩服这个作者的速度,基本上你只要让它自动更新就不会在升级的过程中让它被因为不配套而屏蔽.订阅广告屏蔽列表一般只需要订阅中国和基础列表就可以了. Tab Mix Plus 这家伙是负责标签页浏览的,可以让整个Firefox的操作变成如同Opera或者TheWorld一样,在同一个窗口中打开任何页面.这家伙在Firefox的add-on页面的更新速度并不是很快,但是他在论坛的更新却十分的迅速,所以我这里给出的是他主页的链接,如果更新了Firefox之后发现它不能用了,就直接去它的论坛下载最新的dev版即可.如果要改为类似TheWorld的浏览习惯,只需要"启用单窗口模式"即可. Easy DragToGo 替代了FF 3下面的Super DragdeGo的拖拽功能插件,虽然名字里说的是Easy,但是实现的功能却一点也不比Super差,设置也非常的简单,基本上实现了TheWorld中的全部功能,甚至可以更加自由的让它进化. FireGestures 替代了 All-in-One Gestures 成为了鼠标手势功能插件的首选.设置起来更加简单,同时还提供了更多的功能,我反正现在爱上了"按住右键的同时按下左键"来切换标签页的方法..其他的设置完全类似了,也没有太多需要说的. 通过安装和设置这些插件,基本上Firefox已经和Maxthon/TheWorld差不多了,剩下的就是设置Firefox之中的...

Windows XP 密码恢复攻略

昨天保密检查,全局上下慌慌张张设密码,今天就好了……保密室自己把密码给搞忘了…… 开始了麻烦的密码恢复工作…… 找了一堆相关资料,有说删除SAM文件的(不对,可能这招在2000下有用,但是XP下删除了会提示密码文件不可读什么之类的,然后反复重启) 也有说编写Script文件的(也不对,XP下根本不存在对应的文件夹) 最后尝试了暴力破解,可惜,保密局要求8~14位的密码,算了两个多小时,也就算到7位,还没办法自定义位数,直接Pass…… 最后不得不寻找外部工具,结果就找到了Windows Key http://www.lostpassword.com 结果这个软件的非注册版实在是太BT了,根本就无法恢复常用密码,就只是给你演示一下罢了~ 然后终于在霏凡找到了一个家伙…… http://www.crsky.com/soft/1079.html 同样的公司出产的东西……不过这次就有Key了,而且是企业版,自带了N多软件的Key寻找工具……(我发现我最近总是在找密码破解软件,昨天还在找ZIP密码破解软件,结果找到了Visual Zip Password Recovery Processor,这东西很好找破解版,就不用多说了) 然后加上莫名好人提供的序列号( LBSMM-RNN62-SYJSL-HFRSD-7Z4HEJ )就如虎添翼了~ 简单的安装之后,发现一堆的破解密码的东东,不管它,启动Windows Key,提示可以做出来三个东西,1.ISO文件,从光盘启动杀密码;2.USB启动盘,从USB启动;3.启动软盘…… 当然最简单的选2,放进去一空的U盘,这个时候找你要一个文件……我把番茄的XP-SP2放进去,提取他要的文件,他竟然不认……后来才知道,这家伙还需要一些其他的文件,必须要把原版光盘放进去才行……没辙了,翻箱倒柜找出来正版的2003放进去……这下顺利的就制作成功了。 开机,启动,从USB加载,进入一个类似XP安装的界面,然后出来一大堆的DOS字符,提示你,是否重置密码,然后让你选择重置谁的密码,再让你确认一下,最后还问你,是否把所有人的密码都抹掉?挨个选就是了,很简单的操作之后,重启…… 这回没问密码,直接就进XP了,问题解决……orz

关于正则表达式...

说老实话,虽然一直在用正则,一直在写正则,但是还是没有完全的把它参透.. 今天就是,碰上问题了,无法在PHP中使用开头和结尾断言.. 结果半天才想起来要这样用{^$} 结果再想想我一直要用//把内容包括起来,又是为什么呢...不理解了-__- 然后就是现在才记起来,如果要求输入一个大的范围其实是这样写的: [a-zA-Z0-9] 我还一直以为要加来间隔...果然还是未够班啊...

让我怎么说你好,setTimeout()和clearTimeout()

这俩函数,一个是延时循环执行函数,一个是解除执行函数. setTimeout()的作用是让程序一段时间内反复执行,带的参数一个是函数,后面一个是毫秒数(1000为1秒) 现在的要求是:需要延时执行一个让层消失的函数,但是当这个函数还在排队执行的过程中,一个新的函数执行,一个让新的层出现的函数..但是让新的层出现又需要延时,但是在新层出现之前,又会调用clearTimeout()来解除之前不断循环的让层hide的函数,否则层不可能显示出来.但是延时函数还在延时的过程中,所以还没有顺利的让层消失就被取消掉了.. 因此出现了连续存在但内容变化的层,但是如果要让层顺利的消失,又考虑消失等待的话,就又需要一个延时函数来执行解除执行的函数,但是这个延时解除执行函数的函数又需要一个解除执行的函数来来解除,而且还不能解除的太快..因此又需要延时...如此反复...orz 我说...Javascript里面就没有一个单纯的执行延时的函数么?为啥非要搞个不断执行...难道这样很方便么...仅仅只是少些了一个while(1)循环而已...orz 现在唯一的解决方式就是在clearTimeout()之外放一个死循环反复的判断层是否已经消除,如果消除了则执行clearTimeout()并且break掉...真麻烦,估计看页面卡的都不行了...orz

attachEvent() / addEventListener() 对象添加触发事件(转)

attachEvent() / addEventListener() 对象添加触发事件(转) 有时候当某一对象的某一事件被触发时,它所要执行的程序可能是一大串,有可能是要呼叫某一函数,也有可能同时又要呼叫另一函数。 document.getElementById("btn").onclick = method1; document.getElementById("btn").onclick = method2; document.getElementById("btn").onclick = method3; 如果这样写,那么将会只有medhot3被执行 在IE中使用addachEvent , var btn1Obj = document.getElementById("btn1"); //object.attachEvent(event,function); btn1Obj.attachEvent("onclick",method1); btn1Obj.attachEvent("onclick",method2); btn1Obj.attachEvent("onclick",method3); 执行顺序为method3->method2->method1 Mozilla系列中需要使用 addEventListener var btn1Obj = document.getElementById("btn1"); //element.addEventListener(type,listener,useCapture); btn1Obj.addEventListener("click",method1,false); btn1Obj.addEventListener("click",method2,false); btn1Obj.addEventListener("click",method3,false); 执行顺序为method1->method2->method3 看看gmail的代码 var Ka=navigator.us...

昨天被捣鼓死了...

一直在捣鼓IE 6.0下的表现问题,因为盒模型的问题结果导致IE 6和IE 7显示效果不同. 结果是:IE 7=FF 2=Opera 9.2的显示效果,IE 6是独立独行... 试过了N种CSSHack甚至IE才能识别的CSS选择器,结果发现...无效... 加上还需要远程求人帮忙调试,真是痛苦无比,到最后才发现这个地方: http://browsers.evolt.org/?ie 基本上涵括了全部版本的IE浏览器的绿色版下载...调试者的福音啊~ 解决了调试困难的问题,开始专注于表现问题.. 试过了无数的方法,理论上其实用!important属性就应该可以搞定的,因为IE 7已经修正了这个属性了,理论上它的表现应该是等同于FF了,但是实际中我发现,他的表现竟然和IE 6一样的...半拉子糟糕.. 什么叫半拉子糟糕,意思就是说可以识别,但是还是没用...比如: div{ color: #FFF !important; color: #000; } 在IE 7和IE6中均识别为#000,而FF和Opera可以顺利识别为#FFF 但是如果这样写: div{ color: #FFF !important; } div{ color: #000; } 那么,在IE 6和IE7中均识别为#FFF... 呵呵,可能专业人士要发话了,"这怎么可能!",但是我发现就是可能的,在处理XHTML的时候确实没有这个问题,但是在处理XSL的时候...就变成了这样的半拉子状况.. 而且类似*+HTML,*DIV,_#,*HTML,这类的可以用在HTML中的Hack统统在XSL中失效了... 绞尽脑汁没结果的状况下,我决定利用已知的BUG,把IE 7和IE 6的表现统一,然后再用important属性来区分IE系列和其他浏览器...结果,把宽度改为100%,把float属性去掉,用margin居中...竟然就OK了...然后对FF使用important让width变为auto...世界就这样和谐了... 简直是无语...白白浪费了我一个晚上的时间...

继续学习充电

图片
这次是关于Tab标准化布局的心得...之前发现怎么样也无法吧表格之间的间隙去掉,无论怎么样做出来的都是双线的表格,后来发现原来是要这样解决: tab的属性: border-collapse:collapse; border-color:#999999; 内部表格的属性: border: 1px solid #999999; 这样就OK了,还害得我捣鼓半天.. 还有就是关于PHP直接echo出XML文件的问题,现开始直接echo怎么都无法输出XML文档,输出格式都是正确的,但是浏览器并不识别为XML,后来终于发现...原来是Header的原因.只要在PHP的输入头文件修改Header就好了,语句是: header('Content-Type: text/xml'); 这样就不需要PHP 4.x的版本打开一些特殊的XML类来生成类了,直接echo就好了,但是解析还是存在问题就是了...不过解析也可以用正则来完成的...具体可以查看IBM站的这帖,写的很基础 http://www.ibm.com/developerworks/cn/opensource/os-xmldomphp/ 现在所需要做的就是实现鼠标移动到对应表格之后的浮动效果了... 结果找到这么一个站: http://www.dyn-web.com/ 实在是太强大了...orz JS原来还可以实现这么多功能...我算是开了眼界了...以后看来需要恶补一下JS的编写了..orz 不过美中不足的是,有加密....不允许使用在非Localhost的站点上..不过JS最多也就是一个16进制的加密而已,随便就搞定了,上网,找了一个JS的16进制转换器,OK了~ 这个是存档,下载这张图片然后把扩展名改为RAR即可解压.. 另外就是在XSL中加载JS文件和直接写入JS的问题.. 加载要使用: <script src="'"></script> 而直接写入JS需要: <script langauge="'"> <![CDATA[ ..................... ]]> </script> 有些地方会画蛇添足的给中间再加上XSL的注释,但是这样的话FF反到不能识别了(FF是矫枉过正..内...