作家
登录

解读IE和firefox下JScript和HREF的执行顺序

作者: 来源:www.28hudong.com 2013-03-30 03:12:03 阅读 我要评论

很久都没有写关于代码方面的文章了。主要原因还是因为最近的工作都集中在需求分析方面,没有了现实中的感触,就没有了写作的动机。讨论一个关于JScript执行顺序的问题。示例代码如下: a.htm <A onmouseup="func('onmouseup')" href="b.htm">Click Me!</A> <A onclick="func2('onclick')" href="d.htm">Click Me!</A> <SPAN id=msg></SPAN><SCRIPT>function func(str){ msg(str); window.location.href="c.htm";}function msg(str){ document.getElementById("msg").innerText=str; //A //alert(str); //B}function func2(str){ msg(str); window.location.href="e.htm";}</SCRIPT>在msg(str)有个注释掉的行,试验的时候分别执行A和B。 A B onmouseup onclick onmouseup onclick IE b.htm d.htm c.htm d.htm FireFox c.htm->b.htm e.htm->d.htm c.htm->b.htm e.htm->d.htm 上表主要列出了两个浏览器中的执行顺序,红色代表页面脚本跳转的页面,蓝色是Anchor标签的href属性。从上面可以看出,对于FireFox,始终先执行页面脚本,然后浏览器再跳转。而IE里面执行的过程却有差别:1、使用后退按钮直接回到a.htm,即页面只执行了一个跳转;2、在使用alert中断的情况下,onmouseup执行了页面脚本中的跳转。 从上可以看出,1、对于FireFox而言,页面脚本执行顺序始终优先于浏览器内嵌脚本执行顺序,这个已经很明显了。2、IE中,HREF的执行顺序为onmouseup->href->onclick。真的吗? 为了更加明确2中的执行顺序,我们继续分析onclick和href的执行顺序关系。在上述例子中,onclick是采用调入的方式执行的。如果a. 我们使用以下的测试代码:<a href="d.htm" onclick="return false;">Click Me!</a>发现HREF不能被执行。b. 如果我们使用以下测试代码:<a href="d.htm" onclick="window.location.href='e.htm';return false;">Click Me!</a>发现依旧执行HREF的d.htm,而不是onclick中的e.htm。c. 如果我们使用以下测试代码:<a href="d.htm" onclick="msg('onclick');return false;">Click Me!</a>( function msg()的代码如上)发现执行了function msg(),而HREF不被触发。 晕了。IE的确是个诡异的东西。谁能帮忙解释一下b例中的现象?

  推荐阅读

  js jquery做的图片连续滚动代码

核心代码如下,大家可以参考复制代码 代码如下:<script src="/js/jquery.js"></script> <script> $(document).ready(function(){ $(".bannerbutton li").each( function(){ >>>详细阅读


本文标题:解读IE和firefox下JScript和HREF的执行顺序

地址:http://www.17bianji.com/kaifa2/JS/29909.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)