`
yvfish
  • 浏览: 263888 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

IE6上Javascript的悲催点记录

 
阅读更多

首先对于IE6该死的问题不做讨论了,一句话“客户要用”就无需多讲了。

IE6的CSS兼容性主要是美工头痛的事,不做深入。

通常的CSS兼容IE的大杀器就是使用条件注释

 

<style type="text/css">
.ie6-down {
	display: none;
}
</style>
<!--[if IE 6]> 
<style type="text/css">
.ie6-down {
	display:block;
	margin-left: -45px;
	margin-top: 15px;
	font-size: 14px;
	color: gray;
}
</style>
<![endif]-->

 两个style标签,第一个定义的样式是让元素不可见,第二个定义的样式是对IE6生效在IE6下可见。

 

还是回到Javascript兼容性问题点的记录,先记一部分,全面遇到再加吧。

这些问题解决之后看起来都比较简单,但解决的过程注定十分痛苦,记录一下留个纪念。

 

 

1.iframe[name]

在IE6中动态创建iframe时,其name属性务必写在标签中,否则不生效。

 

var iframe = $("<iframe name='my_iframe' frameborder='0' style='width:100%; height:100%; border:0; display:block'/>")[0];
iframe.src = settings.href;

 只有这样写IE6才能够识别form/a的target='my_iframe'

如果你是按下面的写法创建的iframe,那么就悲剧了。

 

var iframe=$("<iframe>");
iframe.name='my_frame';
 

2.checkbox/radio[checked]

在IE6动态创建checkbox/radio时,其checked属性务必写在标签中,否则不生效

 

var checked="";
if (elem.val() == "1") {
	checked='checked="checked"';//just because fuck ie6				
}				
var targetElem = $('<label><input type="checkbox" name="param_value" '+checked+' value="1" />自动数据同步</label>');

 如果写法如下,那么在IE6上是悲剧的

 

 

var targetElem = $('<label><input type="checkbox" name="param_value" value="1" />自动数据同步</label>');
targetElem.find("input").attr('checked','checked');
 

3.form[class]

 

在IE6/7中,如果form中有一个域的名字叫做className那么悲剧了,form.classXxx将无法正确执行。

 

原代码示例:

 

<form id="dataEditor1" action="Controller"
service="ConfigService.updateAdapter" nextstep="close" class="DataEditor">

	<div>
		<label>
			<span>账单类型:</span>
			<input type="text" name="billType" value="${ param.bill_type}"
			validates="{required:true,messages:{required:'此参数不允许为空!'}}" />
	</label>
</div>

<div>
	<label>
		<span>适配器名称:</span>
		<input type="text" name="name" value="${ param.bill_name}"
			validates="{required:true,messages:{required:'此参数不允许为空!'}}" />
	</label>
</div>

<div>
	<label>
		<span>适配器实现类:</span>
		<input type="text" name="className"
			value="${ param.adapter_class}"
			validates="{required:true,messages:{required:'此参数不允许为空!'}}" />
	</label>
</div>
<input type="hidden" name="action_type"
	value="${ param.action_type}" />
	<input type="submit" name="submit" value="提交" class="spq_input" disabled="disabled" />
	<input type="reset" name="reset" value="重置" />
</form>
 

注意“适配器实现类”的input,它的name="className"。

使用js取值

 

var form=$("form.DataEditor");
alert("forms:"+form.length);//结果为0
alert($("form")[0].className);//结果为[Object object]
 

这个悲剧是因为IE中支持按照表单名和表单域名进行索引,例如dataEditor1.billType。幸好在IE8+已经修复此问题了。

 

 

4.待续

 

 

 

 

 

分享到:
评论

相关推荐

    IE6、IE7、IE8对css和js支持方面差异的研究

    在探讨IE6、IE7、IE8对CSS和JavaScript支持的差异时,我们可以发现一系列显著的兼容性问题和解析规则的变化。以下是对这些差异的详细分析: 1. **JavaScript性能和垃圾收集**: - 在IE6中,JScript引擎在处理大量...

    ie不执行javascript修复

    ie不执行javascript修复ie不执行javascript修复ie不执行javascript修复 当IE不能正常运行时,打开该工具就可以了,自动修复

    IE的JavaScript调试工具

    JavaScript是Web开发中不可或缺的一部分,而作为曾经主流的浏览器,Internet Explorer(IE)提供了自己的JavaScript调试工具,使得开发者能够有效地追踪和解决代码中的问题。在IE的JavaScript调试工具中,有多个关键...

    win8的 IE6

    **知识点3:为什么在win8上使用IE6** Windows 8默认搭载的是Internet Explorer 10,一个现代化的浏览器,对现代Web标准有良好的支持。然而,有些企业或开发者可能因为特定项目或客户需求,需要在Windows 8环境下测试...

    ie6sp1forwindows2000

    只有一个文件名"ie6sp1forwindows2000",这通常意味着压缩包包含的是一个完整的安装程序或ISO映像,用户可以用来在Windows 2000系统上安装或更新IE6到SP1版本。安装这个服务包将确保用户的系统拥有最新的安全更新和...

    ieTest ie6 ie7 ie8 ie9 ie5.5

    这款软件允许开发者和网站管理员在一台计算机上同时运行并测试IE5.5到IE9等多个版本的浏览器,确保他们的网页在这些老版本的IE上能正常显示和运行。 【描述】"ieTest ie6 ie7 ie8 ie9 ie5.5"的描述虽然简洁,但它...

    IE8的JavaScript点击事件(onclick)不兼容的解决方法

    解决这一兼容性问题,涉及到几个关键点:IE8对某些DOM属性支持的差异、HTML元素事件属性的兼容性以及代码执行方式。 IE8不支持`setAttribute`方法来设置事件处理器是产生兼容性问题的核心原因。在标准模式下,IE8及...

    ie6测试工具

    关于IE6测试工具的使用,开发者通常会遇到以下几点重要知识点: 1. **兼容性测试**:由于IE6的渲染引擎和现代浏览器有很大差异,开发者需要确保网站的基本功能、布局和样式在IE6下都能正常工作。这包括CSS布局、...

    IE6升级到IE9兼容性问题和操作手册

    【IE6升级到IE9兼容性问题和操作手册】 在互联网技术不断发展的今天,老旧的浏览器版本如IE6已经无法满足现代网页的需求。因此,升级到更现代的版本,如IE9,是必要的。然而,这个升级过程并非一帆风顺,会涉及到...

    IE6必备调试工具Debugbar.zip

    1. **IE6 调试挑战**:由于 IE6 对CSS、JavaScript、DOM等现代Web技术的支持有限,开发人员需要专门的工具来识别和修复在该浏览器上的错误。 2. **DebugBar 功能**:DebugBar 提供了包括HTML查看器、CSS编辑器、...

    数字微调input兼容IE6

    "数字微调input兼容IE6"这个主题涉及到的是如何在古老的Internet Explorer 6(简称IE6)浏览器上实现一个数字输入框(通常称为spinner或numeric stepper)的功能。数字微调input允许用户通过加减按钮或键盘上下箭头...

    javascript图片完全固定在左、右、上、下,兼容IE6

    ### JavaScript 图片完全固定在左右两边,兼容IE6的知识点 #### 一、问题背景与需求分析 在早期的浏览器版本中,特别是 Internet Explorer 6 (IE6),很多 CSS 特性并不支持或者存在兼容性问题。其中,“position: ...

    高度仿真IE6

    "高度仿真IE6"的测试工具涵盖了IE6的主要特性和行为,包括但不限于CSS渲染、JavaScript支持、DOM操作、ActiveX控件等。这些特性在现代浏览器中可能已经过时或被替代,但在IE6中仍然是核心部分。通过这个工具,开发者...

    ie6的调试工具

    这些工具帮助开发者解决在IE6上遇到的布局、JavaScript和CSS问题,以便于网站在旧版浏览器上的正常运行。 在没有现代开发者工具的时代,调试IE6中的代码是一项艰巨的任务。传统的F12开发者工具并未包含在IE6中,...

    检测低版本IE6.0并提示下载新版本IE的javascript脚本

    对于IE6这类较老版本的浏览器,通过JavaScript可以有效地识别并给出提示。主要通过以下几种方式实现: 1. **User Agent检测**:通过读取浏览器发送给服务器的`navigator.userAgent`属性来判断。 2. **Conditional ...

    修复IE6浏览器工具

    2. **兼容性问题**:随着Web开发技术的更新换代,很多新的HTML、CSS和JavaScript特性在IE6上无法正常工作,导致网页显示不全或者功能缺失。 3. **安全性问题**:IE6存在多个已知的安全漏洞,容易被黑客利用进行恶意...

    IEdom查看javascript工具

    **IEdom查看JavaScript工具详解** 在Web开发领域,DOM(Document Object Model)是HTML和XML文档的标准表示,它提供了一种结构化的表示方式,使开发者可以方便地通过JavaScript或其他编程语言来操作网页元素。"IE...

    学习html Css和Javascript的记录.zip

    学习html Css和Javascript的记录学习html Css和Javascript的记录 学习html Css和Javascript的记录学习html Css和Javascript的记录 学习html Css和Javascript的记录学习html Css和Javascript的记录 学习html Css和...

    JavaScript 瀑布流 吸顶 兼容IE FF Chrome

    在JavaScript中,我们可以通过监听滚动事件,当用户滚动到某个点时,改变元素的定位属性(如`position: fixed`),使其保持在屏幕顶部。 实现JavaScript瀑布流兼容IE、Firefox和Chrome的方法包括: 1. 使用条件...

    ie6透明图片js

    这个技术主要通过JavaScript库如`DD_belatedPNG_0.0.8a-min.js`来实现,它能让IE6支持PNG8格式的透明图片,从而使得网页在旧版IE浏览器上的显示效果与现代浏览器更加一致。 `DD_belatedPNG`是一个广泛使用的...

Global site tag (gtag.js) - Google Analytics