为世界进文明,为人类造幸福,以青春之我,创建青春之家庭,青春之国家,青春之民族,青春之人类,青春之地球,青春之宇宙,资以乐其无涯之生。 —— 李大钊

日记列表


  • 天气
  • 2007年03月15日 04:07 星期四

在opera下超链接颜色为红色?

我的网站在opera下一直会出现一个很奇怪的现象,所有超链接的颜色都是红色(见下图)表情,一直在寻找css的问题一直没有找到。

opera下红色的超链接

今天下午在小毅外链的提醒下,我试着将js禁用,发现链接颜色恢复正常!

难道是我的脚本里设置了超链接颜色??貌似我不会自己做这种事情,那会是谁做的?

我突然注意到一点,颜色出错的超链接都是没单独定义颜色的,它们都是继承自全局的超链接颜色设置,那会不会是我哪里的程序修改了全局的样式呢?

我再次检查我的脚本,我看了一下我的脚本文件,最终注意力集中在实现自定义tooltip的脚本文件上,所有的脚本,只有这个是我从网上取得,稍加修改使用的,难道是它?

我打开tooltip.js,巡视了代码,但并没看见什么设置样式表的函数,除了一个:

Language:javascript, parsed in: 0.004 seconds, using GeSHi 1.0.7.12
  1. function AddCss(){
  2.   var l=CreateEl("link");
  3.   l.setAttribute("type","text/css");
  4.   l.setAttribute("rel","stylesheet");
  5.   l.setAttribute("href","bt.css");
  6.   l.setAttribute("media","screen");
  7.   document.getElementsByTagName("head")[0].appendChild(l);
  8. }
  9.  

这个函数的作用是将tooltip对应的样式表动态加载进来,由于我后来修改了路径及文件名,这段脚本实际上已经不起作用。我顺手将它注释。奇迹发生了……我发现在opera下超链接颜色正常了……

我开始检查opera的error console(下图),发现里面关于这个css的错误很多,居然有中文?我直接访问这个css的地址,文件不存在,出来的当然是一个404的页面。

opera的error console

404...404的超链接就是红色的...我查看了一下源代码:

Language:css, parsed in: 0.003 seconds, using GeSHi 1.0.7.12
  1.   BODY { font: 9pt/12pt 宋体 }
  2.   H1 { font: 12pt/15pt 宋体 }
  3.   H2 { font: 9pt/12pt 宋体 }
  4.   A:link { color: red }
  5.   A:visited { color: maroon }
  6.  

color: red,我苦苦寻找不得的这句话居然出现在一个404页面里……

至此,问题解决。由于自己的小疏忽或者叫做懒惰,没去除无效代码,而导致在一个特定的浏览器下出现奇怪的显示错误。不过话说回来,opera对文件的解析能力也真强……ie、ff在读到404错误之后就停止获取文件内容,而opera不仅继续解析,还把404页面中的样式表读了进来,搞了这么一个“有趣”的bug……无语表情

opera下恢复正常的超链接

在郁闷之后冷静下来想想,自己其实也有很大的责任,对技术的不严谨是造成这次莫名其妙错误的根源,在未详细理解一段代码的情况下就贸然使用,虽然一开始无甚大错,但在某个特定情境下也许就会触发这隐藏的祸患。


在最后再次感谢小毅和怿飞外链,他们在这次解决问题中给了不小的帮助,谢谢。

昵称*:

邮箱 :

主页 :

  • :)
  • :o
  • :D
  • ;)
  • :p
  • :mad:
  • :confused:
  • :(
  • :rolleyes:
  • :cool:
  • :eek: