对《精通HTML》第二章“点击弹出新窗口”的JS程序改进

在《精通HTML:语义、标准和样式》第二章中有个“点击弹出新窗口”的 JavaScript 解决方法,代码如下:

function popup(){
    if(!document.getElementsByTagName || !document.getElementsByTagName("a")) return false;
    
	a = document.getElementsByTagName("a");
	for(i=0;i< a.length;i++) {
        if(a[i].getAttribute("rel") && a[i].getAttribute("rel") == "external") {
            a[i].onclick = function() {
                window.open(this.getAttribute('href'));
                return false;
            };
        }
    }
}

在web文档中,定义a 的属性rel为external弹出新窗口,用来代替target="_blank"。

由于上面的程序代码中有变量作用域等几个小 bug 所以编写得不够完善,下面稍微进行了改进:

/*
  popup
  将文档中所有在 rel 属性中含 external 的链接添加弹出新的窗口的功能
*/
function popup()
{
    if(!document.getElementsByTagName || !document.getElementsByTagName('a')) return;
    
    var as=document.getElementsByTagName('a');
    var relAtt;
    for(var i=0; i< as.length; i++)
    {
	relAtt=as[i].getAttribute('rel');
	if(relAtt&&relAtt=='external')
	{
	    as[i].onclick=function(){
	        window.open(this.href);
		return false;
	    }
	}
    }
}
posted on 2008-03-13 18:32  豆豆の爸爸  阅读(1450)  评论(0编辑  收藏  举报