一直以来有个很头疼的问题困扰着我,那就是图片缩放的问题,写到 JS 里面吧,不太容易修改。写到 CSS 里面吧,IE 6 又不支持 max-width,今天用了很久时间终于解决了这个问题,基本完美了,唯一不完美的就是 IE 6 只有在图片完全下载完成后才会自动调整大小,不过聊胜于无,总比进入页面后看到长长的横向滚动条舒服的多,这里使用了 expression,但是利用了一次加载,所以 expression 不会造成内存泄漏。当然,如果你有更好的解决方案,希望能与我交流。代码如下:
- .Image {
- max-width:600px;height:auto;cursor:pointer;
- border:1px dashed #4E6973;padding: 3px;
- zoom:expression( function(elm) {
- if (elm.width>560) {
- var oldVW = elm.width; elm.width=560;
- elm.height = elm.height*(560 /oldVW);
- }
- elm.style.zoom = '1';
- }(this));
- }
用 Javascript 动态加载一个 CSS 文件的方法很简单,但是如果想要加载一个 CSS STYLE 元素,里面写入一些 CSS 语句就没有那么简单了。不过也难不倒我们,查一查 MSDN 和 Mozilla 的开发网站就可以写出来了,下面的语句兼容了 IE,Firefox,Safari,Opera 没有测试。
- function AttachStyle(ownDoc,styCss) {
- var elmSty = ownDoc.createElement('STYLE');
- elmSty.setAttribute("type", "text/css");
- if (elmSty.styleSheet) {
- elmSty.styleSheet.cssText=styCss;
- } else {
- elmSty.appendChild(ownDoc.createTextNode(styCss));
- }
- ownDoc.getElementsByTagName("head")[0].appendChild(elmSty);
- }
本日志由 Loveyuki 于 2008-01-31 15:21 发表到 技术新知 中,目前已经被浏览 1664 次,评论 10 次;
作者添加了以下标签: Javascript,动态加载,Firefox,Internet Explorer,Safari;
据 InfoWorld的报道 ,微软将于微软将在 2月12日通 Windows Server Update Services 把所有 Windows 系统的浏览器强制升级到 Internet Explorer 7,对于我这样一个 Web 开发者来说这可是一件大好事,不过对于用户来说未必,Internet Explorer 7 有些很奇怪的问题,我就遇到了几个,严重的影响到了我查 .NET 开发资料的效率。
我的系统是 Windows XP SP2 En ,不过以前用的 Windows Server 2003 SP2 En 却没有这个问题,其实这个令人非常郁闷的是访问微软的 MSDN 都有问题,放狗搜了一圈没有解决办法
。
至于 Firefox 浏览器,什么时候 Firefox 能把点阵汉字限定到最小 12PX 我再考虑把他作为主力浏览器,不过我试用了一下 Firefox 3 的测试版本,估计我在 N 年内不用考虑了。
下面放上 Internet Explorer 7 出现问题的页面截图。
本日志由 Loveyuki 于 2008-01-22 18:15 发表到 业界动态 中,目前已经被浏览 906 次,评论 18 次;
作者添加了以下标签: Internet Explorer,Firefox;
首页只显示了部分日志内容,要查看日志的全部内容请阅读全文;
在 Firefox 地址栏输入 about:cache 以后可以看到 Firefox 的默认磁盘缓存目录是在 Windows 用户配置文件夹里面,我们可以通过很简单的设置把磁盘缓存目录放入其他目录:
个人还是建议使用 Portable Firefox。
有时候需要用 JavaScript 得到某个 Node 下面的第一个或者最后一个子节点。在 IE 下面实现起来就很简单,直接用 firstChild 或者 lastChild 就可以了,但是 Firefox 却不行,因为 Firefox 会把无意义的空格和回车也算成一个文本节点。所以 Firefox 要实现的话必须先用 getElementsByTagName 得到某个 TagName 的所有节点。然后在节点数组里面选取就是了,这种方法在 IE 下面也是有效果的
,浏览器内置支持的的 firstChild 和 lastChild 基本算是废了,没什么大用处了。
但是如果不知道要取得哪个 TagName 的话怎么办? 其实也很简单,直接遍历节点的 childNodes,然后判断 nodeType,如果是 1 表示是一个 HTML 节点,如果是 3 表示一个文本节点。
另外需要注意一点的是 DOM 是树结构,具体的代码就不写了。
不知道为什么,可能我的思维不是正统程序员的思维吧,感觉写 Firefox 下操作 DOM 的 JS 远没有 IE 下来的方便。真希望所有浏览器都能实现同一个基础 ajax 平台,就像 prototype 和 jQuery 一样,那样多方便啊。
个人希望以后网站的发展趋势是 RIA + SiteMap ,哈哈