最近新写的项目中就有个要求是去掉链接的虚线,其实网上搜索下基本都有,而且是大部分基于IE都可以用的,不过要兼容IE和FF的话那就要点技巧了。说到这里,有链接的不单是A标签还有其map,img等,这里搞个总结算了。以后直接用,o(∩_∩)o...
在网页超链接中,点击链接后会显示虚线边框。通过给超链接加上onfocus="blur()"即可去掉边框.如:<a href="http://blog.dt27.cn" onfocus="blur()">DT27</a>
onfocus="this.blur()"的使用需要在css加htc文件,htc文件如下:
<public:attach event="onfocus" onevent="hscfsy()"/> <script language="javascript"> function hscfsy(){ this.blur(); } </script>
onfocus="this.blur()"必须加到每个a标签中。这样IE就OK了,如果是FF那需要a:focus{ outline:0;}
局部控制
<a href="http://blog.dt27.cn" onfocus="this.blur()">link1</a> <a href="http://blog.dt27.cn" onfocus="this.close()">link1</a> <a href="http://blog.dt27.cn" hidefocus="true">link1</a> <a href="http://blog.dt27.cn" hidefocus="hidefocus">link1</a>
全局控制:
CSS实现(实践可用)
a{blr:expression(this.onFocus=this.close());} /* 只支持IE,过多使用效率低 ,好慢呐*/ a{blr:expression(this.onFocus=this.blur());} /* 只支持IE,过多使用效率低 */ a:focus { -moz-outline-style: none; } /* IE不支持 */
HTC实现 IE支持,页面载完才有效果
把下面这段代码存为.htc为扩展名的文件
<public:attach event="onfocus" onevent="hscfsy()"/> <script language="javascript"> function hscfsy(){ this.blur(); } </script>
最后在CSS中调用 a {behavior:url(htc文件所在路径地址)}
JS遍历实现
window.onload=function() { for(var ii=0; ii<document.links.length; ii++) document.links$[$ii$]$.onfocus=function(){this.blur()} }
JS封装为函数
function fHideFocus(tName){ aTag=document.getElementsByTagName(tName); for(i=0;i<aTag.length;i++)aTag$[$i$]$.hideFocus=true; //for(i=0;i<aTag.length;i++)aTag$[$i$]$.onfocus=function(){this.blur();}; }
当前是添加一个hidefocus的属性,注释掉的句子是添加onfucus=this.blur();
然后调用fHideFocus("A"),即可把a的虚线框去掉
通过传递不同的参数,可以去掉更多的虚线框,比如"BUTTON"可以去掉button的
但要记住参数要用大写字母
====================================
A. map area内链接如何消除链接虚线?
这是一个观念上的错误,其实应该在所在map的图片上加以控制,而不是在area内,参考传统办法
B. 关于onFocus
<a href=“http://blog.dt27.cn“ onFocus="this.blur()"> <Img src="/img/example.jpg" border=0> </a>
onFocus是设置鼠标焦点事件的东西,这个可以用,也可以不用,不过为了让更多的浏览器识别的话,建议采用border=0 这个才是去除虚线框的关键所在