开发者

Jquery External Link Help

I'm fairly new to jquery and haven't had much time to explore more and was wondering if anyone could help me. Here is the code I have which I pulled from different places:

$("a").filter(function() {
                         return this.hostname && this.hostname !== location.hostname;
                         })
                         .attr({
                                target: "_blank"
       开发者_Go百科                        });
                         $('a[rel*="external"]').live('click',function(){ this.target='_blank'; });

What I have this doing is whenever there is an A tag with href="http://" then it adds target="_blank" to it. If the href="http://" follows with the website URL you are on then it will not add target="_blank". On top of that if I want an internal page to open in a new window then I would add rel="external" to the A tag, which is then converted into target="_blank" on the live site.

How can I make it so that if I have a subdomain it will not open as an external page either. Say my url is example.com and the subdomain is test.example.com. So if I make a link from example.com to test.example.com then I do not want it to open in a new window. Also from test.example.com to example.com I would not want it to open in a new window either.

Also is this even a good approach? I write my sites in xhtml 1.1 and try to keep the pages valid. This will pass validation but it still adds target="_blank" to the ending result. Is this bad practice or acceptable?

Thanks for any advice.


Instead of checking for hostname equality, you could check to see if this.hostname ends with location.hostname. Unfortunately, JavaScript doesn't have an endsWith function but you can easily write one:

String.prototype.endsWith = function(that) {
    return this.lastIndexOf(that) == this.length - that.length;
};

Then, in your filter method:

return this.hostname && this.hostname.endsWith(location.hostname);

Links to subdomain.example.com end with example.com and so their target would be set.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜