Articles: Open all links in a new window

An aquaintance of mine requested some assitance on how to use JavaScript to have all links on a page open up in a new window. The background is that he has a website with a couple hundred links, and doesn't want to change them all, for both practical and bandwidth-reasons. Here is the script I came up with.
Added: 2005-09-18 15:33:09 - Modified: 2005-09-18 13:43:19 - Level: Beginner
Printer friendly version PDF File
Recommend this article to a friend.

Bookmark this on google Bookmark this on del.icio.us Submit this to digg Bookmark this at yahoo Bookmark this at reddit Bookmark this at furl Search technorati for links to this page Toggle more

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Open all links in a new window</title>
<script type="text/javascript">

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Open all links in a new window</title>
<script type="text/javascript">

This first part is just a general header for XHTML and declaring the start of a JavaScript block. Next we'll look at the function that actually open the link in a new window

function myopen()
{
window.open(this.href);
return false;
}

this should be fairly intuitive to anyone familiar with JavaScript, now, lets have a look at the function that tell the different links to execute the prior function

function myfunc()
{
var arr = document.getElementsByTagName("a");
var c = arr.length;
for(var i=0;i<c;i++)
{
arr[i].onclick=myopen;
}
}

now this is some more to detail, but in short, it just create an array arr that contain all links on the site. Then it loop through it and assign the .onclick=myopen to all of them


window.onload=myfunc;

This just tell the browser to execute the function myfunc, which in turn run the loop as described above. And then it follow just a simple HTML closing and some test links

</script>
</head>
<body>
<p>
<a href="http://www.kfwebs.net/#link1">link1</a>
<a href="http://www.kfwebs.net/#link2">link2</a>
<a href="http://www.kfwebs.net/#link3">link3</a>
<a href="http://www.kfwebs.net/#link4">link4</a>
<a href="http://www.kfwebs.net/#link5">link5</a>
<a href="http://www.kfwebs.net/#link6">link6</a>
</p>
</body>
</html>

This first part is just a general header for XHTML and declaring the start of a JavaScript block. Next we'll look at the function that actually open the link in a new window

function myopen()
{
window.open(this.href);
return false;
}

this should be fairly intuitive to anyone familiar with JavaScript, now, lets have a look at the function that tell the different links to execute the prior function


function myfunc()
{
var arr = document.getElementsByTagName("a");
var c = arr.length;
for(var i=0;i<c;i++)
{
arr[i].onclick=myopen;
}
}

now this is some more to detail, but in short, it just create an array arr that contain all links on the site. Then it loop through it and assign the .onclick=myopen to all of them


window.onload=myfunc;

This just tell the browser to execute the function myfunc, which in turn run the loop as described above. And then it follow just a simple HTML closing and some test links

</script>
</head>
<body>
<p>
<a href="http://www.kfwebs.net/#link1">link1</a>
<a href="http://www.kfwebs.net/#link2">link2</a>
<a href="http://www.kfwebs.net/#link3">link3</a>
<a href="http://www.kfwebs.net/#link4">link4</a>
<a href="http://www.kfwebs.net/#link5">link5</a>
<a href="http://www.kfwebs.net/#link6">link6</a>
</p>
</body>
</html>

Related articles:



[Sitemap]