Search code examples
xhtmlhref

Apply a href-like attribute to non-<a> elements


I've been working on a page where there are several entries contained in different <div>s. Each is only a title linked to a page, an image and a short description. However, the description may contain arbitrary tags, including <a> tags.

Since these are pretty straightforward and the actual link isn't that big, I've made it so a click on the <div> will call location.href = (link URL). However, that's a pretty sad thing, because it's browser-unfriendly: for instance, under Google Chrome, a middle-click on one of said <div>s won't open the link in a new tab.

Considering you shouldn't nest <a> tags, is it possible to make any element in XHTML behave like a link without resorting to Javascript?

I'm using XHTML 1.1, sent with the proper MIME type, and that's the only restriction I'm bound to.


Solution

  • Not really, no. Though it's worth reading Eric Meyer's thoughts on this. Also, it appears that HTML51 includes the capacity for any element to become a link, so it might be worth using that doctype instead of xhtml, if possible.

    It's worth also adding that html 5 does allow for an <a> element to enclose block-level elements, see: http://www.brucelawson.co.uk/2008/any-element-linking-in-html-5/, example taken from the linked page:

    Instead of:

    <h3><a href="story.htm">Bruce Lawson as Obama's running mate!</a></h3>
    <a href="story.htm"><img src="bruce.jpg" alt="lovegod" /> </a>
    <p><a href="story.htm">In answer to McCain's appointment of MILF, Sarah Palin, Obama hires DILF, Bruce Lawson, as his running mate. Read more!</a></p>
    

    you can say:

    <a href="story.htm">
    <h3>Bruce Lawson as Obama's running mate!</h3>
    <img src="bruce.jpg" alt="lovegod" />
    <p>In answer to McCain's appointment of MILF, Sarah Palin, Obama hires DILF, Bruce Lawson, as his running mate. Read more!</p>
    </a>
    

    Updated to mention possible inaccuracy

    1: I may have misinterpreted part of the document to which I linked, having tried to find support for my claim that '...appears that HTML5...any element to become a link' (in the W3C's html 5 overview) it doesn't seem to be there. I think I was over-encouraged when I saw Meyer's proposal to include that possibility.

    I'm too gullible, and naive... =/