Javascript控制网站链接是否新窗口打开

不过在w3c的验证标准中,target="_blank" 这个属性是不被验证通过的

原因是那些砖家认为不经过用户同意就打开一个新窗口,这样的行为属于强X了用户的思想。是不友好,不礼貌的行为。所以标准提出的是用 rel="external"来声明,配合一个external.js来实现。在这里贴一下这个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 nofollow")
anchor.target = "_blank";
}
}
window.onload = externallinks;

不过上面这些不是本文的主要内容,这里我主要介绍一种新方法:

通过js实现用户自主选择是否在新窗口打开链接:此代码可以记录cookie,保存365天。即用户选择一次,在不删除cookie的情况下会保存此设置一定时间。

下面看代码即演示:(建议另存为html文件运行,这样方便查看cookie情况)

 代码如下 复制代码

<html>
<head>
<script type="text/javascript">
window.onload=checkCookie;
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}

function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : "; expires="+exdate.toGMTString())
}

function checkCookie()
{
target=getCookie('target')
if (target!=null && target=="true")
  {
 document.getElementById("checkit").checked=true;
 openStyle("_blank");
  }
else
  {
 if (target!=null && target=="false")
 {document.getElementById("checkit").checked=false;
 openStyle("");}
  }
}

function openStyle(choice){
 var links = document.getElementsByTagName("a");
 for(var i=0;i<links.length;i++){
   links[i].target = choice;
 }
}
function setCheck(obj){
 if(obj.checked)
 {
  openStyle("_blank");
  setCookie('target','true',365);
 }
 else{
  openStyle("");
  setCookie('target','false',365);
 }
}
</script>
</head>
<body>

<input type="checkbox" id="checkit" onclick="setCheck(this);" />选择是否在新窗口打开<br/>
<a href="http://www.111cn.net" >baidu</a><br/>
<a href="http://www.111cn.net" >安卓主题</a>
</body>
</html>

高级进阶部分:可自由设置站内站外链接是否新窗口打开如果一些朋友需要设置站内的链接就在本窗口打开,站外的链接全部是新窗口,怎么办呢?

首先添加代码:

 代码如下 复制代码

var index=location.hostname; //获取当前主域

然后修改openStyle函数为:

 代码如下 复制代码
function openStyle(choice){
var links = document.getElementsByTagName("a");
for(var i=0;i<links.length;i++){
if(links[i].href.indexOf(index)==-1 && links[i].href.indexOf('javascript') == -1){
links[i].target = choice;
}
}
}

ok,到此结束。这样就能判断本站链接就在当前窗口打开,站外链接就在新窗口打开了。

时间: 2024-11-08 18:22:30

Javascript控制网站链接是否新窗口打开的相关文章

Javascript控制页面链接在新窗口打开具体方法_javascript技巧

第一个方法就是用jquery实现,原理是这样的先找到站点中的外部链接,然后再给链接加上target=_blank"属性就搞定了,代码如下:jquery在新窗口打开  复制代码 代码如下: $("a[href*='http://']:not([href*='"+location.hostname+"']),[href*='https://']:not([href*='"+location.hostname+"'])").addClass(

Javascript控制页面链接在新窗口打开

第一个方法就是用jquery实现,原理是这样的先找到站点中的外部链接,然后再给链接加上target=_blank"属性就搞定了,代码如下: jquery在新窗口打开  代码如下 复制代码 $("a[href*='http://']:not([href*='"+location.hostname+"']),[href*='https://']:not([href*='"+location.hostname+"'])") .addClass

jquery简单实现外部链接用新窗口打开的方法

  本文实例讲述了jquery实现外部链接用新窗口打开的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 $("a[href^='http://']").click(function(){ this.target = "_blank"; }); 或者使用下面这个 ? 1 2 3 $(function(){ $("a[href^='http://']").attr({'target':'_blank'}) }) 希望本文所述对大家的j

jquery简单实现外部链接用新窗口打开的方法_jquery

本文实例讲述了jquery实现外部链接用新窗口打开的方法.分享给大家供大家参考.具体实现方法如下: $("a[href^='http://']").click(function(){ this.target = "_blank"; }); 或者使用下面这个 $(function(){ $("a[href^='http://']").attr({'target':'_blank'}) }) 希望本文所述对大家的jQuery程序设计有所帮助. 以上是

dedecms ckeditor编辑器添加链接默认新窗口打开的修改方法_网页编辑器

DEDECMS文章页加入的链接都默认不是在新窗口打开.百度一下,都是关于FCKeditor编辑器的.dedecmd v5.7 默认ckeditor编辑器.写下来希望能帮到那些不会改的同学 在清理下浏览器缓存,就可以了.

B2C电子商务网站是不是用新窗口打开链接

写在前面这是参加SEO培训时候和咨询老师争议的问题.SEO?没错,是SEO培训老师花了相当时间大讲用户体验.果然是一个全民用户体验的年代了.大家以前都说"我觉得-","我认为-"现在从经理到前台都会"对用户来说-""从用户体验的角度来讲-". 担心的是用户体验发展如同早期被泛滥的用户友好(User Friendly),那个时候"User Friendly"作为众多软件必备标签印刷在外包装上,以达到用户友好的

FCKEditor超级链接默认新窗口打开的修改方法_网页编辑器

Fckeditor是一款开源的WEB可视化编辑器,因为该软件小巧.易用.方便受到大家的欢迎,国内很多CMS都采用了FCK编辑器,最近有很多网友向反映关于FCK添加的超级链接不能在新窗口中打开,需要另外设置才可以,那么,能不能将链接默认为新窗口呢? 效果如图所示: 打开 fckeditor\editor\dialog\fck_link.html 查找 id="cmbTarget" 的 select 标签, 添加 selected="selected" 属性 复制代码

jquery实现页面链接新窗口打开方法

这个方法依托jQuery,如果主题没有引用的话,那么有两个选择: 引用jQuery,然后愉快的使用本功能 不引用,苦逼的修改源代码 好了,字数凑的差不多了,我来贴代码啦! <script type="text/javascript"> jQuery(document).ready(function(){jQuery("a[rel='external'],a[rel='external nofollow']").click(function(){windo

WordPress文章在新窗口打开所有链接

在新窗口打开WordPress文章中的链接,有助于提高访客体验,为什么这么说呢?假设你在看文章的过程中,想浏览文章中提到的另一篇文章,但是现在这篇文章你还没有看完,没想到一点击链接,浏览器就切换到了新文章,要看刚才的文章,还得后退,是不是有点烦? 虽然有时候点击鼠标中键(滚轮)可以使链接在新窗口打开,或者某些浏览器支持拖动链接新窗口打开,但是这些并不适用于所有的访客. 所以,我们可以考虑,让文章中的所有链接都在新窗口打开.要实现这个功能,你可以在添加链接的时候,手动选择打开方式(给链接添加 ta