对html中的研究

<A>几乎是html中最简单的标签了,做过网页的地球人都知道。真有讲的必要吗???
用的最多的属性是href,target,title,name等,其中最常用的是href,它有如下含义:
1.href="a.htm"表示需要链接的网址,可以是相对的,也可以是绝对的url,点击后跳转到a.htm,跳到的目标窗口取决于target属性的设置,例如target=_blank是新开窗口
2.href="#xxx"表示链接到本页面的某个锚点,如果是href="b.htm#xxx"则表示跳到b.htm的xxx锚点
3.href="javascript:aaa()"表示点击链接可以调用js函数aa()
是否只有以上三种含义?href的内容会被其他属性影响吗?我一直没有注意这个问题,可能90%以上的webdeveloper都没重视过。
我遇到这个问题是源自于美工做的一个页面,这个页面是要做了两个tab互相切换来显示tab下的内容,用了国外一个网站的例子:
http://www.dynamicdrive.com/dynamicindex17/ajaxtabscontent/
看上去不错,但是我却发现在我的电脑上出现了怪事。
1.用IE访问该页面,点击后面的那些tab,页面弹到了external.htm,就是tab的链接中所指的。而没有在tab来显示。
2.用Firefox访问没有问题
3.用Maxthon访问也没有问题
经过很多朋友(至少有几十个人)的测试,有另外2个人的IE和我的IE有同样的症状,这不由得不让人想起我们3人是否就是传说中的有RPWT?
但是我检查了我们的IE,版本为6.0.2900.2180.xpsp_sp2_gdr.050301-1519,和其他人的一样。
我不得不开始重新审视<a>,看了一下代码,发现链接写为<a href="external.htm" rel="ajaxcontentarea">Bird</a>,rel是什么东西,第一次在<a>中看到,以往都是在<link>中用于rel=stylesheet。通过google和msdn查询,HTML4.0增加了一个新属性:rel,这个属性用来说明链接和包含此链接页面的关系,以及链接打开的目标。没看懂这句话是什么意思,但是明白它是干吗的了,简单的说,点击这个链接,页面会把<a>中的href链接的页面内容读取过来,显示在<DIV id=ajaxcontentarea></DIV>中。
通过进一步的研究,页面在onload的时候,调用了startajaxtabs(),该函数为tab中的各tab链接初始化,添加了onclick方法,onclick时调用ajaxpage()去读取href中指定的页面。
这样,问题就简化为:
<a href="http://www.google.com" onclick="javascript:alert(‘aa’);return false">google</a>
大家可以把这段考在一个htm文件中,在IE中打开,然后点击这个链接,如果出现aa的alert框后,IE仍然跳到google网站了,那么恭喜你,要么你的IE和我的IE是孪生兄弟,要么你和我一样有RPWT。我旁边的大多数朋友,用他们的电脑点击该链接时,只会弹出alert框,而不会跳到google网站。如果不加return false,那么IE肯定是先alert出aa,再跳到google网站。这也很好理解,因为onclick后返回了false,这次点击就结束了,而不会去执行href的链接,那么我的IE到底怎么了呢?
不得不用一个极端的方法,先解决这个问题,就是把href的内容copy到另一个自定义属性aa中,让ajaxpage()去读取aa的内容load另一个页面,同时把href的内容改为#default,这样IE在执行load页面的同时,即使是执行跳转链接,也只是在本页,而不会跳走。
问题是解决了,但是原因还没有查明。问题在于,有的IE在执行完<a>中的onclick后,即使已经return false了,但是仍然会去根据href内容跳转url。
查了google,基本大家在<a>中使用onclick时,都会把href设置为#。
到底谁的RP出问题了?
此条目发表在计算机与 Internet分类目录。将固定链接加入收藏夹。

留下评论