469,275 Members | 1,871 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,275 developers. It's quick & easy.

getElementsByTagName + getAttribute("class")??

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[i];
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

Oct 20 '05 #1
3 21635
On 20/10/2005 10:32, hu***@satellitecreative.com wrote:
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

--
Michael Winter
Prefix subject with [News] before replying by e-mail.
Oct 20 '05 #2
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.

hu***@satellitecreative.com писал(а):
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[i];
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


Oct 20 '05 #3
> IE's implementation of the *Attribute methods is broken. In this
instance, it expects 'className' not 'class'.


Thanks, thats sorted it.

Ben
Oct 26 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

8 posts views Thread by Arvid Andersson | last post: by
12 posts views Thread by Romain | last post: by
3 posts views Thread by F. Da Costa | last post: by
11 posts views Thread by jesdynf | last post: by
1 post views Thread by CARIGAR | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.