首页 > 技术文章 > JS中的<a>标签

hjbky 2016-12-24 14:58 原文

<a>标签可定义锚。一个锚有两种用法:

  • 通过使用 href 属性,创建一个到另外一个文档的链接
  • 通过使用 name 或 id 属性,创建一个文档内部的书签 

如果是在 HTML 5 中,它定义为:超链接,用于从一个页面连接到另一个页面。此时,name 属性将由 id 代替。

它的属性在 W3school 中有详细说明。

一.链接:
通常格式:

<a href="url">text</a>

1. <a> 标签中调用 JS 方法(点击事件)
有以下几种方法:比如调用 mapObj.zoomOut(); 方法。
1)

<a href="mapObj.zoomOut();">缩小</a>

此种方法在传递 this 等参数时很容易出现问题,而且 javascript: 协议作为 <a> 的 href 属性时不仅会导致不必要的window.onbeforeunload 事件的触发,还会使 IE 中的 gif 动画图片停止播放。W3C 标准不推荐在 href 里面执行 javascript 语句。
2)

<a href="javascript:void(0);" onclick="mapObj.zoomOut();">缩小</a>

这种方法是很多网站最常用的方法,也是最周全的方法,onclick 方法负责执行 JS 函数,而 void 是一个操作符,void(0) 返回undefined,地址不发生跳转。而且这种方法不会像第一种方法一样直接将 JS 方法暴露在浏览器的状态栏。
3)

<a href="javascript:;" onclick="mapObj.zoomOut();">缩小</a>

这种方法同 2),区别在于执行了一条空的 JS 代码。
4)

<a href="#" onclick="mapObj.zoomOut();">缩小</a>

这种方法也是网上很常见的代码,# 是标签内置的一个方法,代表 top 的作用。所以用这种方法点击后网页返回到页面的最顶端,但是对于一个很长的页面而言,可能会在跳转时产生页面滑动的效果。
5)

<a href="#" onclick="mapObj.zoomOut();">缩小</a>

这种方法点击执行了js函数后return false,页面不发生跳转,执行后还是在页面的当前位置。
2.在新页面跳转
在标签内添加 target="_blank" 属性,比如:

<a href="http://www.test.com/" target="_blank">test</a>

 target 属性是在何处打开目标 URL。取值如下:
  • _blank - 在一个新的未命名的窗口载入文档
  • _self - 在相同的框架或窗口中载入目标文档
  • _parent - 把文档载入父窗口或包含了超链接引用的框架的框架集
  • _top - 把文档载入包含该超链接的窗口,取代任何当前正在窗口中显示的框架 
3.<td>标签中添加超链接
  只能在<td></td>标签内添加超链接,而不能在<tr></tr>中添加(不符合标准)。如果直接使用<a href></a>无效,可通过以下代码实现:

<td style="cursor:pointer;" onclick="window.open('http://blog.163.com/hdyl_8603','_blank')">网址 :<a href=''>hdyl的blog</a></td>


二.书签:
一般用于同一文档内部的跳转。
被跳转的部分,添加标签:

<a name="test"></a>

添加链接的部分,添加标签:

<a href="#test"></a>

三.样式: 
如果需要修改某些内容的链接样式,可设置一个 class 而将这些内容放在这个 class 内。比如:
<head></head> 内设置样式:

<style type="text/css">
html,body{height:100%;margin:0;padding:0;font-size:15px;}
/*右键菜单样式*/
.triangle-border {
position:relative;
padding:15px;
border:2px solid #5a8f00;
color:#333;
background:#fff;
/* css3 */
-webkit-border-radius:10px;
-moz-border-radius:10px;
border-radius:10px;
}
/*右键菜单项样式,triangle-border 内的 <a> 标签样式*/

.triangle-border A:link{color:#009933;text-decoration:none;font-family:Microsoft YaHei}
.triangle-border A:visited{color:#009933;text-decoration:none;font-family:Microsoft YaHei}
.triangle-border A:active{color:#009933;text-decoration:none;font-family:Microsoft YaHei}
.triangle-border A:hover{color:#009933;text-decoration:none;font-family:Microsoft YaHei}
</style>

<body></body> 中应用:

<div class="triangle-border">

<table>

<tr>

<td><a href="javascript:void(0);" onclick="mapObj.zoomIn();">放大</a></td>

</tr>

</table>

</div>

效果:

JS中的a标签 - ☆無心﹎ - 无心之过
 
 
文章来源:http://blog.163.com/hdyl_8603/blog/static/34622429201321241215120/

推荐阅读