造成IE6报Aborted的情况有很多,本文着重解析<a>标签中添加onclick事件时导致的Aborted情况。
<a onclick="dosomething()" href="javascript:void(0);">test</a>
关于javascript:void(0)与return false;已经有很多高手对其进行过分析:
慎用javascript:void(0)
javascript:void(0)
上面两个链接中,第2个解析最清晰:void(0)返回的是一个null,指页面跳转到没有内容的链接,即不跳转。
第一个链接,则对void(0)及 onclick 中是否需要return false;作了一些猜测。
通过测试案例来分析:
<html>
<head>
<script type="text/javascript">
function test() {
window.location.href='http://www.baidu.com';
alert(3);
}
function test2() {
document.getElementById('myimg').src='http://www.google.com.hk/images/nav_logo_hp2.png';
}
</script>
</head>
<body>
<a onclick="test();" href="http://www.google.com.hk">test1</a>
<a onclick="test();" href="javascript:void(0);">test11</a>
<a onclick="test();return false;" href="javascript:void(0);">test12</a>
<a onclick="test();" href="javascript:alert(4);">test13</a>
<a onclick="test();" href="javascript:window.location.href='http://www.qq.com';alert(4);">test14</a>
<a onclick="test2();" href="javascript:void(0);">test2</a>
<a onclick="test2();return false;" href="javascript:void(0);">test21</a>
<img id="myimg" src="http://static.googleadsserving.cn/pagead/imgad?id=CICAgICQzpSE8QEQoAEY2AQyCKKNlbkoPd3Q"></img>
</body>
</html>
上述代码中:
示例1:点击test1,则先alert(3),然后跳转到了href的google页面,而非baidu,说明onclick中的跳转并没有被执行,而是记录在浏览器中,真正执行的是href中的链接指向;
示例2:点击test11,则先alert(3),然后没有跳转到baidu页面,链接跳转由href中的返回值决定;
示例3:点击test12,则先alert(3),然后跳到baidu页面,链接跳转由onclick中的决定,而且href中有javascript代码的话也不再执行;
示例4:点击test13,则先alert(3),然后再alert(4),没有出现跳转,链接由href决定;
示例5:点击test14,则先alert(3),然后alert(4),跳转qq.com,链接由href决定。
由此得到结论:a 标签中,onclick方法,关于页面跳转的开关被缓存起来,遇到return false;时才进行装载或者进行页面跳转,若href中指定有任何的内容,则onclick中的关于页面跳转的设置都不生效,即href中的优先级高一些(当href中出现跳转到其他页面时,不做onclick中的跳转,有一定的道理)。
示例6:点击test2,图片无法装载,因为href以为要跳转到一个空的页面,所以其他资源没有必要装载,无法进行显示,如果可以的话倒可以在httpwatch上看看是否已经发送请求去load图片(我预料,它是不发送请求的)。
2011-12-08,经过今天的测试,IE6下的httpwatch请求为:
IE9下的httpwatch记录为:
在chrome下的httpwatch为:
示例7:点击test21,图片装载成功,onclick中的return false;是让onclick中关于src,href等请求都执行完,然后再去执行href中的逻辑,即将跳转逻辑的优先级放置到onclick中。
由此再得到一个结论:IE中认为href中可能要跳转到其他的页面,那么图片的src设置也是不必要的,其余的浏览器都没有这样的问题,其余的浏览器都已经形成共识:即使存在href=”javascript:void(0);”这些逻辑,在chrome下测试了:也是先执行onclick代码,并将其中的href页面跳转行为缓存起来,但是图片请求仍然进行,然后再是执行href中的逻辑,与添加return false;的优先级相似。
所以为兼容IE6,在设置href的同时,在onclick中使用return false;来提前处理一些图片装载等或者是页面跳转等行为。
希望对大家理解javascript:void(0) 以及在IE6下的 onclick=”dosomething();return false;” 的理解有所帮助。

- 大小: 38.6 KB

- 大小: 75.2 KB

- 大小: 69.5 KB
分享到:
相关推荐
给a标签绑定了一个click事件用来触发ajax请求,在IE6中,请求时常会被中断,在其他浏览器中都一切正常,具体解决方法如下,感兴趣的朋友可以参考下
Scan Aborted(解决方案)知识点整理: Scan Aborted一词通常指代某个操作或过程在执行中因遇到错误或其他原因而被提前终止。这种情况可以在多种编程上下文中出现,比如文件扫描、网络通信或数据库操作等。而针对Scan ...
解决ERR_OPERATION_ABORTED错误的关键在于准确诊断原因,并采取针对性的解决策略。无论是网络问题、服务器状态、代码逻辑错误还是系统配置问题,都应该逐一排查,直至找到问题根源并解决。针对具体案例,合理编写...
本文将详细探讨“JLINK Debugger aborted”问题的解决方法,帮助开发者解决在软件开发和嵌入式OS调试中可能遇到的困扰。 当出现"JLINK Debugger aborted"错误时,这通常意味着调试过程被异常中断,可能是由于多种...
message:自动真机调试 Error: Aborted. Please retry appid: wxcc22649cfe0db7b5 openid: o6zAJs9SgDdvm3T5BkTODqbUIJB4 ideVersion: 1.06.2401020 osType: win32-x64 time: 2024-02-07 23:12:31
在探讨如何解决jQuery ajax请求在IE6浏览器中莫名中断的问题之前,我们需要了解jQuery ajax请求的基本原理以及IE6浏览器的特殊性。 jQuery ajax请求依赖于AJAX技术,通过JavaScript向服务器发起异步请求,并处理...
首先我们来了解下Aborted_clients和Aborted_connects这两个状态变量的含义,当出现会话异常退出时,这两个状态值会有变化。根据官方文档描述,总结如下: 造成Aborted_connects状态变量增加的可能原因: 客户端...
dbimport 导入时出现长事务错误问题的解决办法 dbimport 是 Informix 数据库中的一种...dbimport 导入时出现长事务错误问题的解决办法是通过在数据库无日志方式下导入数据,然后恢复日志记录功能来确保数据的一致性。
本文主要给大家介绍的是关于MySQL中Aborted告警的相关内容...数据库出现问题的时候需要DBA在短时间内快速解决问题,因此一个好与坏的DBA,区别也在于此。 Part2:种类 [Warning] Aborted connection 305628 to db: 'db'
CAD安装失败Failed Installation aborted, Result=1603
用IAR和仿真器给板子下载程序时出现“a target cannot be selected when used in another debug session or in other applications.”解决办法及驱动。
除了上述通用的解决方案,开发者还需考虑特定技术栈或框架下的事务处理。例如,在分布式系统中,可能需要引入分布式事务管理器来处理跨服务的事务问题。在微服务架构中,使用消息队列和事件驱动设计也是常见的事务...
Logstash6整合Hadoop报错与解决方案 Logstash是 Elastic Stack 中的数据处理引擎,可以从多种数据源中提取数据,并对其进行处理和转换,然后将其输出到多种目标中,例如 Elasticsearch、Kafka、Hadoop 等。在大...
本文将深入探讨“Firefox Firebug JS错误”的主题,帮助开发者理解和解决这类问题。 首先,让我们理解Firebug的基本概念。Firebug是Mozilla Firefox浏览器的一个扩展,它为开发者提供了强大的网页开发和调试功能,...
MySQL中的"Sort aborted: Out of sort memory, consider increasing server sort buffer size"错误通常发生在数据库执行涉及排序操作的查询时,如ORDER BY或GROUP BY语句。这个错误表明MySQL在执行查询过程中分配的...
解决这个问题需要检查Squid日志(通常在`/var/log/squid/`下),找出具体原因。如果是由于资源不足导致的,可以考虑增加服务器资源或优化Squid配置;如果是配置错误,应根据日志信息调整配置文件。 在客户端设置...