IE6竟然对样式表的顺序有变态需求

如果样式表文件里存在下面这种样式写法要当心了

#header_right.kouhao{…}
#header_right.ppnk{…}

在FF和opera下,不会有问题,但是在IE6下,第二条将没有结果。

我是在调试背景图片的时候发现这个问题的,在第一个页面正常的背景图样式,在第二个页面就怎么也出不来,开始怀疑是名字和顺序的问题,后来在睡觉前突然想到是不是两条不能并存,今天一试果然如此。

认识XML+XSLT

尝鲜尝鲜,动易的采集不错,SF的感觉也不错,粗略使用了一下后就要关心模板和标签了。

动易原来的标签系统我非常不喜欢,看不明白(如果我那样也算看明白了的话,那就说明这种标签系统太单调了)。风讯的自由标签是不错,可是我一次都没用过,高新技术派不上用场,但是风讯在一般性标签中将样式和标签分开的做法我是很喜欢的。

动易SF的新标签系统应该说可以做到和风讯那样数据和样式表现分离了,只不过对数据库的表和字段要非常熟悉。至于SQL查询,反正我目前是不会用什么新奇的查询方式,嗯,不是“不去用”是“不会用”。谢天谢地,动易这次没有自己开发出一种私有的标签解释模型,而是使用了公版的XSLT,这是格式化XML的标准方法。这样的解释方式一来学习起来更容易,有更多的书可以参考,更多的人可以咨询,二来一举两得,熟悉了CMS,也接触了一门新科目。

按照动易SF的手册做了一下,感觉有那么点门道,但是还是太麻烦。无意中看见动易的手册建议用户用DW8来完成建立XSLT的操作,马上翻阅了下参考资料,DW8还真有这个可视化编辑功能。

简单的说,就是先建立一个XML(动易SF可以自动生成一个符合查询条件的XML),然后新建一个XSLT页面(实际使用中可以是要选择XSLT片段),DW8自动要求绑定数据源。选定SF自动生成的XML文件。在绑定面板中将可使用的字段拖进来,并且快速选定需要循环的部分,“插入”XSLT循环语句,选中带有加号的节点。确定,存盘,一个可以使用的XSLT就建立好了。把这个XSLT应用到XML中去,只要打开XML文件,附加上XSLT这个样式表,存盘就好了。无论用IE还是FF打开XML文件,就能得到视觉化的效果。用FF的工具还能得到还原后的HTML代码,用这个代码做CSS样式将会更加直观方便。

接下来找点资料,争取把对字段数据的过滤转换搞明白。比如SF的时间字段就非常复杂,要得到指定样式的时间还不知道怎么办。

不过这已经让我很满意了,SF的可定制性的确非常高。等风讯出来了,要看看正式版的DC究竟有什么过人之处。

【年终清扫】环保的office虚拟打印

(该篇草稿最后编辑于2007-06-16 08:42:18,已成鸡肋,草草清理)

有一篇“使用说明书”需要打印,但是纸张大小设定得很怪异,字体很大,没什么用处的例图也很多,为了节约纸张准备重排。但是重排会导致一些错乱,为了最直接地解决问题,准备找一个在一张纸上缩小打印多页内容的打印软件帮忙。以前记得这种软件挺多的,临了要用的时候却很难找一个称心的。正没主意的时候想起了新版OFFICE软件带的“虚拟文档打印”,经过几下测试发现很好用。

先将文档打印到虚拟打印机,形成打印文件,然后用管理工具打开这个文档,调整缩略打印选项。为了正方面打印,也可以CTRL选择单数或双数页删除,手工控制双面打印。

感觉上这东西是MS冲着adobe的PDF去的,用这个方法可以在不具备共享打印的情况下,用文件方便地实现打印文档的转移和传播。

“Sentinel 服务启动失败”的排除

莫名其妙跑出这么个服务错误。仔细看日志,说是依附的并口服务不能启动。我的机器根本没有并口,在出现这个故障前也没有安装什么东西,倒是好像有杀到过一个病毒。

分析下大致有两个原因。一是我装的某个软件突然需要读取加密狗;二是某个病毒留下的痕迹。到底是什么原因,我现在仍然不能确定,病毒残留的可能性比较大。

开始想硬添加一个打印端口满足他的启动条件,然后再用冰刃查出这个服务所用的文件。谁知道折腾来折腾去,又整出一个并口服务不能启动的错误。

现在是两个服务错误了。一个是并口不能启动,一个是Sentinel不能启动,因为找不到并口服务,并且找不到启动文件”。

并口的问题有人提供了解决办法:

找到一个红叉的记录:由于下列错误,Parallel port driver 服务启动失败: 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。” 不知道怎么解决,搜索一下,搞定。转文如下:  有人说找到系统服务把这项关了就可以,但我怀疑他们没有亲自实践过,因为系统服务中根本找不到对应的服务。这个错误出现的原因可能是并口已经在bios 中关闭了,但是系统或者某个软件中还会有个虚拟的并口。解决这个问题,只需要在注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Parport中,将“start=3”改为“start=0”就可以了。

究竟改成0是什么意思,我现在仍然不明白,反正问题解决了。反正计算机没有并口,应该没什么隐患。

关于Sentinel这个问题的信息千变万化,多数认为是因为一个叫彩虹公司出产的软件导致的问题。在无奈之下,我启动REGEDIT希望在里面能搜索出和Sentinel有关的信息。在查找出的第二条信息中,我发现了一个“启动”中的Sentinel项目的键值是Sentinel.sys文件,而这个文件并不存在。几乎可以肯定是他。删除整个目录。重启,没有再报错。

究竟他是什么?你能告诉我吗?

CSS中display与visibility不仅是物理占位的不同

有一个用CSS隐藏HTML元素的任务,需要把body>div>div>下的文字隐藏掉。HTML代码一个字都不能改,只能靠CSS来解决。

开始用“display: none”来解决。但是这么一来,不仅body>div>div>下的文字消失,TABLE元素也消失了。然后用display: block恢复TABLE为可见,书上说,这个属性可以把元素改为可见,结果是没有任何反映。

试了很多选择符,无奈IE支持有限。于是用visibility试了试,哈,简直跟拉电线开关一样方便,想显示就显示,想隐藏就隐藏。先吧body>div>div隐藏,然后把body>div>div>table显示就OK了。

查网上资料说,display与visibility的隐藏元素的方法就是占不占物理位置的问题,看来那只是表面现象,display: block也只是设置块属性,不具有设置元素为可见的功能。display与visibility其实有本质上的区别:自从display: none出现的那一刻起,这个区块就是不存在的,哪怕他的子元素如何挣扎要显示出来也是无济于事的,地球都不存在了,还有珠穆朗玛峰吗?visibility就象是哈利波特的隐身衣,他只是不显示出来而已,在物理上他还是存在的。

【疑难排除】导致IE、FF混乱的神秘字符

今天调试代码的时候发生了一个灵异现象。相关的三个文件打包如下:

点击下载此文件

文件中有两个页面:01.htm和02.htm。两个文件看似一模一样,但是无论是用IE还是FF浏览都存在问题。

在IE下02.htm在首位空了一行,“另存为”以后,标签的位置也发生了错乱。而01.htm不存在问题;

在FF下似乎两个文件完全一样,但是用web-developer工具“查看处理后的原始码”,会发现代码也发生了混乱,一个大大的空间被撑了出来。

用其他工具比较不同,我的EDITPLUS2.13看不出区别(据说2.11版本可以看出隐藏字符)。搞了半天,最后在记事本中通过移动光标的方法,发现文件最原始部分存在一个隐藏的字符。就是这个字符导致了两个浏览器的理解混乱。

如果有兴趣的话,这个鬼魅一样的字符可以在02.htm中轻易的复制提取,然后粘帖到别人的文档中,从而让别人也挠一下午的头……。

2010-11-06注:这应该是UTF-8格式文件的BOM头闹出的问题