po主手头维护的网站是上世纪的作品。当时约摸ie所占的市场份额相当大,以至于开发人员都没有考虑到浏览器兼容性问题(这不科学!)。怎奈po主是个强迫症阿。最近在修改的时候,还是没忍住,把兼容性问题解决了。一旦开始改bug,根本停不下来!

主要问题有2个:

1、浮动图标问题。低版本ie下可以实现浮动效果,firefox/高版本ie下无。察看javascript代码,原理上是用javascript对于position:absolute的div,每过固定时间(毫秒级)设置其top和left。语句如下:

img1.style.left = (xPos + document.body.scrollLeft);
img1.style.top = (yPos + document.body.scrollTop);

唔唔,不兼容的原因在于:firefox/高版本ie对于left的值只认像素值。修改成 img1.style.left=****+"px"; 即可。

2、下拉菜单问题。这段代码后来在查疑的时候搜了下,貌似是网上抄过来略作修改的,主要由css达成。其中一些css的名称阿,多余的css阿都保留着。问题在于css生成的下拉菜单无法对齐到指定位置。核心代码如下:

#nav LI A {
    COLOR: #fff;
}

#nav LI UL {
    Z-INDEX: 9999; BORDER-BOTTOM: #0751b0 1px solid; POSITION: absolute; TEXT-ALIGN: left; BORDER-LEFT: #0751b0 1px solid; LINE-HEIGHT: 23px; MARGIN-TOP: 26px; WIDTH: 104px; BACKGROUND: white; MARGIN-LEFT: -90px; BORDER-TOP: #0751b0 0px solid; BORDER-RIGHT: #0751b0 1px solid; LEFT: -999em; _margin-top: 26px; _margin-left: -90px
}

原理上是在mouseover的时候,把nav LI UL(下拉菜单)的left改成auto。nav LI是nav LI UL前面的区块,该2区块需要上下对齐,方法是调整MARGIN-TOP和MARGIN-LEFT。你看到啦,里面很多干扰属性。以至于我查了2个小时。。。主要是该ul的初始位置在低版本ie和firefox/高版本ie中不一样。解决的方法是:nav LI区块中所包含的有且仅有链接a,因此设置nav LI A,增加display:block。这样就可以保证初始位置一致了。(有显示,并且在left:auto这种文字流对齐的方式下,不同浏览器保持一致的占位情况。)

不同浏览器之间的javascript和css兼容性问题的更多相关文章

  1. IE和Firefox浏览器CSS兼容性技巧整理

    转自:http://homepage.yesky.com/185/11484185all.shtml#p11484185 CSS兼容常用技巧(1) 更多精彩相关文章推荐: 各大浏览器 CSS3 和 H ...

  2. 表单input按钮在各浏览器之间的兼容性

    从网上看了这篇关于表单input按钮的浏览器兼容性问题,总结的还不错,所以copy下来学习下. input按钮在各个浏览器之间的兼容性问题,看下边这段代码: input.item { backgrou ...

  3. javascript创建css、js,onload触发callback兼容主流浏览器的实现

    http://www.fantxi.com/blog/archives/load-css-js-callback/ 由于需要写个函数,既可以加载css,又可以加载js,所以对各主流浏览器对加载js.c ...

  4. 前端福利之表单input按钮在各浏览器之间的兼容性(转)

    从网上看了这篇关于表单input按钮的浏览器兼容性问题,总结的还不错,所以copy下来学习下. input按钮在各个浏览器之间的兼容性问题,看下边这段代码: input.item { backgrou ...

  5. 浏览器对DIV+CSS兼容性问题大总结

    浏览器对DIV+CSS兼容性问题大总结 接触DIV+CSS架构已经快两年了,个人觉得css入门不难,但要学精并非一朝一夕的,现在大部分网络公司都比较主张用div+css来布局,这就面临着一个比较难的问 ...

  6. 重温JavaScript获取CSS样式的方法(兼容各浏览器)

    众所周知,CSS样式有三种类型:行内样式.内部样式和外部样式,JavaScript获取CSS样式时分为两种情况:行内样式获取法 和 非行内样式获取法 . 一.行内样式获取相对简单,通过element. ...

  7. 第十一章:WEB浏览器中的javascript

    客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节 ...

  8. JavaScript权威指南--WEB浏览器中的javascript

    知识要点 1.客户端javascript window对象是所有客户端javascript特性和API的主要接入点.它表示web浏览器的一个窗口或窗体,并且可以用window表示来引用它.window ...

  9. JavaScript 与 CSS 滚动实现最新指南

    一些(网站)滚动的效果是如此令人着迷但你却不知该如何实现,本文将为你揭开它们的神秘面纱.我们将基于最新的技术与规范为你介绍最新的 JavaScript 与 CSS 特性,(当你付诸实践时)将使你的页面 ...

随机推荐

  1. AtCoder AGC032E Modulo Pairing (二分、贪心与结论)

    题目链接 https://atcoder.jp/contests/agc032/tasks/agc032_e 题解 猜结论好题. 结论是: 按\(a_i\)从小到大排序之后,一定存在一种最优解,使得以 ...

  2. hadoop-httpfs

    Hadoop-httpfs: client向httpfs提交文件操作,由httpfs和集群交互: 优势:client不必访问集群 WebHDFS API: https://archive.cloude ...

  3. Git与Repo 的使用

    一.Linux常用命令 pwd           用于显示工作目录,执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称. chmod      用来变更文件或目录的权限. >      ...

  4. 异常处理(Exception Handling)

    java里的异常处理(Exception)Exception 是在程序执行过程中发生的一些不希望发生的事情,这些事情如果不被好好处理,就会导致奇怪的结果或者是程序终结.Exception Handle ...

  5. Data Science Competition中的工具汇总

    除了基础的pandas,scikit-learn,numpy,matplotlib,seaborn以外 ( 1 ) category_encoders github 属于scikit-learn co ...

  6. 黑马vue---8-10、v-cloak、v-text、v-html、v-bind、v-on的基本使用

    黑马vue---8-10.v-cloak.v-text.v-html.v-bind.v-on的基本使用 一.总结 一句话总结: v-bind等这些东西都是用的vue.data里面的变量 1.使用 v- ...

  7. Oracle 字段监控 ( column monitor)

    Oracle 字段监控 ( column monitor) */--> Oracle 字段监控 ( column monitor) Table of Contents 1. 开启与关闭 2. 字 ...

  8. 【React自制全家桶】五、React组件的生命周期函数详解

    一.总览React组件的生命周期函数 什么是生命周期函数:简单的来说就是 在某个时刻会自动执行的函数 二.React的生命周期函数主要由四块组成 分别是:组件初始化.组件挂载.组件更新.组件卸载 三. ...

  9. 代码实现从键盘接收一个字符串, 程序对其中所有字符进行排序,例如键盘输入: helloitcast程序打印:acehillostt

    package com.loaderman.test; import java.util.Comparator; import java.util.Scanner; import java.util. ...

  10. 路由设置中"DHCP服务器"启用或不启用是干嘛的?

    “DHCP服务器”启用的话,每一台连接这个路由器的电脑都会自动获取一个IP地址,并且不会跟其他电脑的想冲突:“DHCP服务器”不启用就必须手动给每一台连接这个路由器的电脑设置本地连接里面的“inter ...