getElementsByTagName + getAttribute("class")??

H

hutch

Hi,

I'm making use of this VERY useful function for a so called 'standards
compliant' replacement for target="_blank":

function externalLinks() {
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
var anchor = anchors;
if (anchor.getAttribute("href") && anchor.getAttribute("rel") ==
"extlink") anchor.target = "_blank";
}
} window.onload = externalLinks;

and using it with:

<a href="mylink" rel="extlink" class="extlink">link text</a>

What I'd really like to do is make it even better and do away with the
'rel', and have it that each anchor with the "extlink" class applied to
it gets processed by the function.

I have tried replacing the relevant code with this line:

if (anchor.getAttribute("href") && anchor.getAttribute("class") ==
"extlink") anchor.target = "_blank";

cut i get 'null' as the response [i alert
'anchor.getAttribute("class")']
So any ideas why this doesnt work?

Eventually I'd like to have it that all I need to do is apply the
'extlink' class to a link, and it'll be styled as I want it AND open in
a new window.

Any pointers appreciated,
Ben
 
M

Michael Winter

I'm making use of this VERY useful function for a so called 'standards
compliant' replacement for target="_blank":

[code adding target attribute through script]

If you add a target attribute via a script to a document with a Strict
DTD, the resulting document tree is just as invalid as it would be if
the target attribute was present in the markup. Either use a
Transitional DTD, where the target attribute is defined, or use a Strict
DTD and ignore the error.

[snip]
if (anchor.getAttribute("href") && anchor.getAttribute("class") ==
"extlink") anchor.target = "_blank";

cut i get 'null' as the response [i alert
'anchor.getAttribute("class")']

With IE, I assume?

IE's implementation of the *Attribute methods is broken. In this
instance, it expects 'className' not 'class'.

Don't use the *Attribute methods; use the property shortcuts, like
anchor.className, instead.

[snip]

Mike
 
G

Gomolyako Eduard

See to Microsoft CSS Behaviors.

You can define external link in the following way:
HTML:
<head>
<style type="text/css">
a.extLink {
/*Some css properties here*/
behavior: url(extlink.htc);
}
</style>
</head>
<body>
<a href="somesite.com" class="extLink">Open somesite.com in new
window</a>
</body>

extlink.htc file:
<public:component>
<public:attach event="oncontentready" onevent="init()" />

<script language="javascript">

function init()
{
if (element && element.tagName && element.tagName.toLowerCase() ==
"a")
element.target = "_blank";
}

</script>
</public:component>

Best, Ed.

(e-mail address removed) пиÑал(а):
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,196
Latest member
ScottChare

Latest Threads

Top