`base` tag and IE 7.0
在把IE从6.0升级到7.0之后,我突然发现在Outlook express中无法点击打开邮件中的一些超级链接地址了。将邮件保存为HTML文件,放到IE 7.0中去浏览,确实也发现那些链接指向的不对,本来应该是http://...什么的,却成了file:///...。不过在Firefox 2.0中仍然能够正确处理。本来在Outlook express中点击打开这些超级链接是很轻松方便的事情,现在倒好了,需要把邮件另存为HTML文件,再用Firefox打开。这确实让人很是恼火。
经过一些分析对比,发现是这些邮件中用到了一个不标准的特性,把<base>放到了<body></body>中,而不是按照HTML标准的要求放到<head></head>中。IE 7.0改进它对标准的符合程度应该是件好事情,可是这确实给我带来了不小的麻烦。看来要解决这个问题,只能是舍弃IE 7.0或者是去找开发商升级我要用的软件了。
实际上,微软的开发人员早在2005年就在Blog中说了IE要改善对标准的遵循程度了,并谈到了<base>的问题,只不过我在这方面比较孤陋寡闻罢了:All your <base> are belong to
us 。下面是两个例子:
$ cat good.html
<html>
<head>
<title>samples</title>
<base href=http://192.168.0.1:80/>
</head>
<body>
<a href="/index.html">samples</a>
$ cat bad.html
<html>
<head>
<title>samples</title>
</head>
<body>
<base href=http://192.168.0.1:80/>
<a href="/index.html">samples</a>
在我给开发商的技术支持发去了邮件后,很快就收到了回信,告诉了我正确的修复方法。原来发送Mail时用到了一个HTML的模板文件,只需要修复该文件就可以解决问题了。