href标签target=_blank属性的妙用

回复 星标
更多
href标签target=_blank属性的妙用
.
.
.
.
.
.

我们都知道html超链接标签href属性target="_blank"的作用是使打开的链接以新开的窗口形式出现。但是除了直接写在href标签里面,你还知道有其他更巧妙的给链接加target="_blank" 的办法吗?下面作者将要和大家分享的是如何巧妙的使用href target="_blank"这个标签。

首先来看看target="_blank"的用处:

<a href="http://q.115.com/153332" target="_blank">PHPer社区</a>

上面的代码中,如果不加target="_blank"这个属性,默认均为本页直接打开,即:target="_self"。

下面说一下怎么会突然想到这个标签的吧!作者网站在当初设计时,对于链接这一块,没有做太多的想法,所有链接元素打开的方式都是_self。现在才发现存在不少问题,本站自己的内链就不说什么了,但是发表在文章内容中的链接,多半是指向别人网站的连接,而这些链接也都是直接通过_self形式打开的,这个问题就来了,用户体验度不好不说,对自己网站的流量,权重都是个挺大的损失。那怎么解决这个问题呢?我需要的是在网页页面局部实现 href 的 target="_blank" 属性,最后想出了两种方法:

(1)给这些链接一个个手动去加上target="_blank",但这个方法太笨了,太费时费力。

(2)在页面head标签内加上<base target="_blank">这个标签,就一劳永逸了。这个标签可以使得页面上的所有连接都以新开窗口的形式打开。但是感觉这个用户体验度很不好,用户才浏览了几个网页就打开的全是我的网站了,这会让人很不爽,至少我是这么感觉的。而且这个在严格的W3C标准中是不标准的,至于为什么?原因很人性化,是因为外国人认为,不经过用户同意,就随便打开新窗口,是不礼貌的,不尊重用户的选择。那这个时候该怎么办呢?

搜索了大量的资料得出href标签在HTML 4.0增加了一个新属性:rel,这个属性用来说明链接和包含此链接页面的关系,以及链接打开的目标。rel有许多的属性值,比如next、previous、chapter、section等等。这里我们可以使用rel="external"属性。那么原来这样写的代码:

<a href="www.ladyw.com" target="_blank">PHPer社区

现在要写成这样:

<a href="www.ladyw.com" rel="external">PHPer社区</a>

这是符合strict标准的方法。但是这里还必须配合一个javascript才有效,相关的代码JS如下:

function externallinks(){
	if(!document.getElementsByTagName){
		return;
	}
	var anchors=document.getElementsByTagName("a");
	for(var i=0;i<anchors.length;i++){
		var anchor=anchors[i];
		if(anchor.getAttribute("href")&&anchor.getAttribute("rel")=="external"){
			anchor.target="_blank";
		}

}

}

当页面加载完成时调用externallinks方法即可,这样就解决了在网页页面局部实现href的target="_blank"属性的问题了。

2015-07-31 16:53:13更新过
新窗口打开 关闭