web开发未解之谜

ie7的li:hover问题

<!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"> 
<head> 
</head> 
<body>
<style type="text/css">  
#list span { left:-999em;position: absolute; } 
#list:hover span, #list.on span { left:auto; }
</style> 
<ul> 
<li id="list">产品介绍<span>产品一</span>  
</li> 
</ul> 
<input type="text"/>
<script>
var o = document.getElementById("list"); 
o.onmouseover=function() { this.className="on"; }
o.onmouseout=function() { this.className=""; } 
</script> 
</body> 
</html>

 ie6和ff都很正常

但ie7就有问题,当把光标放在文本框中,然后再把鼠标放在菜单上,弹出来的菜单就不会消失了

解决方法是去掉#list:hover或者加一个样式在onmouseout中设置

但未知什么原因

ie6的line-height失效问题

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<p style="line-height:30px;"> 服务:
  <input name="" type="text"/>
  <br />
  特别推荐:
  <input name="" type="text"/>
  <br />
  交通停车:
  <input name="" type="text"/>
</p>
</body>
</html>

ie7和ff显示正常 
但ie6的line-height就没效果

未知解决方法,未知原因

ie高度设置问题

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<body>
<style type="text/css">
*{ padding:0px; margin:0px;}
html,body{overflow:hidden;height:100%; width:100%;}
</style>
<table style="width:100%; height:100%;" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td style="height:100px;">22222222222</td>
  </tr>
  <tr>
    <td>mid</td>
  </tr>
  <tr>
    <td style="height:100px;">111111111</td>
  </tr>
</table>
</body>
</html>

这是一个全屏的三层样式

ff的效果应该是正确的 
但在ie里上下两块的高度都不是设定的100px

未知原因,未有解决方法

 js的正则问题

function a(val) 

  var re = /^\d+$/g;
  alert(re.lastIndex);
  return re.test(val); 

alert(a(5)); 
alert(a(6));

用ie的话是0 true 0 true 
用ff的话是0 true 1 false

原因没有弄清楚

不过直接用new RegExp的方法能解决

ie透明背景问题

<div style="border:1px solid #000; height:100px; width:100px; position:absolute;" onclick="alert(1)">
click
</div>

ff中正常,在ie中点击div中文字以外的部分会没反应。

如果有background-color就没问题,未知原因。

document.body.appendChild()导致IE已终止操作

以下代码会导致在ie出错“已终止操作”,ff中是没问题的:

<!DOCTYPE html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
<div>
<script type="text/javascript">
document.body.appendChild(document.createElement("div"));
</script>
</div>
</body>
</html>

但脚本如果不套在div里面又没问题,

未知原因,估计跟dom有关(网上说是跟body的加载顺序有关)。

解决方法是body加载完之后执行(ie特有的document.body.onload),或用insertBefore代替,例如:

document.body.insertBefore(obj, document.body.childNodes[0]);

ie的table的td的宽度问题

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<table border="1" cellspacing="1" cellpadding="1" width="600">
    <tr>
      <td width="100" align="right"> 后面空了: </td>
      <td> 内容内容内容内容内容内容内容 </td>
    </tr>
    <tr>
      <td colspan="2"> 温馨提示:温馨提示 温馨提示 温馨提示 温馨提示 </td>
    </tr>
</table>
<br /><br />
<table border="1" cellspacing="1" cellpadding="1" width="600">
    <tr>
      <td width="100" align="right"> 后面空了: </td>
      <td> 内容内容 </td>
    </tr>
    <tr>
      <td colspan="2"> 温馨提示:温馨提示 温馨提示 温馨提示 温馨提示 </td>
    </tr>
</table>
<br /><br />
<table border="1" cellspacing="1" cellpadding="1" width="600">
    <tr>
      <td width="100" align="right"> 正常正常:</td>
      <td> 内容内容内容内容内容内容内容 </td>
    </tr>
        <tr>
      <td colspan="2"> 温馨提示:温馨提示 温馨提示 温馨提示 </td>
    </tr>
</table>
</body>
</html>

以上3个table的结构是一样的其中都有一个td是100宽度只是内容不同,
在ff中3个table显示的效果是一样的,但用ie看会发现第一第二个table会无端多出一段空白 
解决方法:给table添加样式table-layout:fixed;,未定义时,单元格宽度会按内容宽度的比例自动调整。

ie6/7的hr行距问题

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
1111111111111111111111111111111
<hr style="margin:0; padding:0;"/>
22222222222222222222222222222222
</body>
</html>

即使给hr设置了margin和padding都是0,但ie6和ie7还有有一个间距。
未知原因,未找到解决方法,建议用div的border模拟。

IE8的链接触发问题

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
a:hover {
    background:#000;
}
</style>
</head>
<body>
<div style="border:1px solid #1633bf;"> <a href="#">测试1</a> <a href="#">测试2</a> </div>
</body>
</html>

用ie8鼠标在“测试2”后面移动,居然会触发“测试1”的hover。
未知原因,未有解决方法。
ie的a元素的innerHTML的bug
比较两次alert的结果:

<!DOCTYPE html>
<html>
<body>
<a id="test1" href="http://www.cnblogs.com/">hello@163.net</a>
<a id="test2" href="http://www.cnblogs.com/">hello#163.net</a>
<script type="text/javascript">
alert(test1.innerHTML + "_" + test2.innerHTML);
test1.href = test2.href = "http://cloudgamer.cnblogs.com/";
alert(test1.innerHTML + "_" + test2.innerHTML);
</script>
</body>
</html>

有@的链接,内容变成href的内容,未知原因,解决方法是在修改的链接前面加上一个空格(即:" "+href)。
ie6的!important的bug
ie6运行下面代码:

<!DOCTYPE html>
<html>
<body>
<style>
#t{font-size:20px}
.t{ font-size: 12px !important; }
</style>
<div id="t" class="t">test</div>
</body>
</html>

可以看到是以12px显示的,可见!important能正常执行,再看下面代码:

<!DOCTYPE html>
<html>
<body>
<style>
.t{ font-size: 12px !important;font-size:20px}
</style>
<div class="t">test</div>
</body>
</html>

这里却以20px显示,说明!important在这里失效了,该bug常用来对ie6做hack,但要注意只能用在同一个{}内。

ie6的图片宽高问题

测试一下代码:

<style>
img{width:100px; height:100px;}
</style>
<img id="img" style="width:auto;height:auto;" />
<script>
img.onload = function(){
    this.onload = null;
    this.src = "http://www.baidu.com/img/lm.gif"
}
img.src = "http://www.baidu.com/img/baidu_logo.gif"
</script>

除了ie6在第二次载入时都能自动恢复尺寸。

ie6却在第一次载入时尺寸就定住不变了,未知解决方法。

ie8的table问题

  运行以下代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body>
<table border="1">
    <thead>
        <tr>
            <td>test</td>
        </tr>
    </thead>
    <tr id="t">
        <td>test</td>
    </tr>
    <tr>
        <td>test</td>
    </tr>
</table>
<br>
<input id="del" type="button" value="del">
<script>
document.getElementById("del").onclick =function(){
    var t =document.getElementById("t")
    t.parentNode.removeChild(t);
}
</script>
</body>
</html>

 除了ie8,tr在remove后都能向上填充位置。

ie8却定在那里不动,解决方法是在移除后触发table的reflow,例如设置table的className。

ie6/7的clientTop的问题

运行以下代码:

<!DOCTYPE html>
<html>
<body>
<div id="test" style="border:10px solid #000">test</div>
<script>
var elem = document.getElementById("test")
elem.style.position = "absolute";
width = elem.clientTop;
elem.style.display = "none";
alert(elem.clientTop)
</script>
</body>
</html>

一般来说display为 "none"之后clientTop应该是0
但ie6 7却还会弹出10

本文转自博客园cloudgamer的博客,原文链接:web开发未解之谜,如需转载请自行联系原博主。

时间: 2024-09-30 00:56:57

web开发未解之谜的相关文章

spring boot项目中使用jpa的一个未解之谜

公司最近主要的工作就是把之前的一个项目进行几乎全面的重构,之所以说几乎全面,是因为除开业务逻辑外全部换血: 框架由spring+struts2+mybatis改为spring boot+jpa 数据库由sybase+h2改为oracle+redis 子系统之间的交互由activemq改为http 代码具体实现全部重写 对一个运行了若干年的项目进行这样的大动作,路程无疑是漫长而复杂的.在进行了一系列设计文档的编写.评审.修订.再评审之后,终于可以开始码代码了. 本以为码代码终于可以松一口气,没想到

&amp;amp;#9733;大脑的9大未解之谜

大脑的9大未解之谜 1.大脑为什么有时间的意识         为什么人人都自带"生物闹钟",比如想要第二天早晨办的很紧急的事,清晨一起床就想起来了(当然,健忘者另当别论):等待的时间越长,你会感到越急躁.换句话说,你是有意识的.这个复杂的话题从一开始就困扰着科学界,对于意识,只有哲学家给出个一个详细的定义,但意识到底是什么东西,科学家现在也还解答不了.神经学家甚至把意识作为一门现实的研究课题来研究,在欧美的一些大学更有意识学的相关专业. 2.记忆是如何存储和提取的        人的

未解之谜--HTTPS协议POST数据到CDN节点异常的排查

背景信息: 1,特定ECS实例往CDN节点上post 数据走https协议失败,返回curl: (52) Empty reply from server 2,透过cdn直接post源站正常(源站仅支持http协议) 3,其他ECS post cdn节点正常 4,切换cdn节点进行post也不行 示意图:(画的比较渣,大家海涵) 排查过程: 1,CDN回源走的80端口,进行抓包排查(过滤特殊的测试url)过滤条件 " http contains "testYjyCallback"

★大脑的9大未解之谜

大脑的9大未解之谜 1.大脑为什么有时间的意识         为什么人人都自带"生物闹钟",比如想要第二天早晨办的很紧急的事,清晨一起床就想起来了(当然,健忘者另当别论):等待的时间越长,你会感到越急躁.换句话说,你是有意识的.这个复杂的话题从一开始就困扰着科学界,对于意识,只有哲学家给出个一个详细的定义,但意识到底是什么东西,科学家现在也还解答不了.神经学家甚至把意识作为一门现实的研究课题来研究,在欧美的一些大学更有意识学的相关专业. 2.记忆是如何存储和提取的        人的

神奇大自然!死亡谷百年未解之谜!700 磅滚石漂移,实乃冬季结冰所致

class="post_content" itemprop="articleBody"> 美国加利福尼亚州死亡谷的干涸湖床"跑道盆地",一块滚石在沙地上留下长长的漂移轨迹.湖床上的滚石重量可达到700磅(约合317公斤),漂移距离可接近600英尺(约合182米).100年来,科学家一直未能揭开滚石为何漂移之谜-- 迄今为止,还没有一位科学家记录下滚石的漂移.据信,至今也没有一个人看到过它们移动.不过,湖床上留下的轨迹清楚地证明它们确曾发生漂

关于在web开发中jsp中的checkbox的点击

问题描述 关于在web开发中jsp中的checkbox的点击 在web开发的时候,那个jsp里面有一个checkbox,但是我不知道为什么不能点击那个checkbox,我写了点击事件了,然后我再那个点击方法里面alert了一下,发现并没有弹出框,所以我以为是点击不了这个checkbox了,请大神们指教!谢谢! 解决方案 看下你的代码怎么写的,, 解决方案二: web开发中的JSP<JSP Web开发详解>粗读(二)<JSP Web开发详解>粗读(一)

Tomcat与Java Web开发技术详解连载之一

web|详解 本章介绍如何在Tomcat上创建和发布Web应用.这里首先讲解Tomcat的目录结构以及Web应用的目录结构,接着介绍如何将HTML.Servlet.JSP和Tag Library部署到Web应用中,然后介绍把整个Web应用打包并发布的方法,最后介绍如何在Tomcat上配置虚拟主机. 本章侧重于讨论Web应用的结构和发布方法,所以没有对本章的Servlet和JSP的例子进行详细解释,关于Servlet和JSP的技术可以分别参考其它章节的内容. 2.1 Tomcat的目录结构 在To

Tomcat与Java Web开发技术详解连载之二

web|详解 2.2.4 部署HTML文件 在helloapp目录下加入index.htm文件,这个文件仅仅用来显示一串带链接的字符"Welcome to HelloApp", 它链接到login.jsp文件.以下是index.htm文件的代码: <html><head><title>helloapp</title></head><body ><p><font size="7"

Tomcat与Java Web开发技术详解连载之三

web|详解 2.2.8 创建并发布WAR文件 Tomcat既可以运行采用开放式目录结构的Web应用,也可以运行WAR文件.在本书配套光盘的sourcecode/chapter2/helloapp目录下提供了所有源文件,只要把整个helloapp目录拷贝到/webapps目录下,即可运行开放式目录结构的helloapp应用.在Web应用的开发阶段,为了便于调试,通常采用开放式的目录结构来发布Web应用,这样可以方便地更新或替换文件.如果开发完毕,进入产品发布阶段,应该将整个Web应用打包为WAR