IE is again the only browser that has a special bug that violate the priciple of least surprise.
that is that when accessing an attribute that references a URL, (such as href, src, or action) that URL is automatically converted from the specified form into a full, cannonical, URL for example, if href="/test/" was specified, and you will get http://example.com/test/ if you do .href or .getAttribute("href").
however, it provide some an addition to hte getAttribute call. which you can pass a value of '2' to the end of 'getAttribute' method, then it will retrieve the value that you entered.
CAVEAT: it seems the behavior has changed for even chrome, the return value is http://example.com/test/ if you entered "/test/"; better test it more and make sure that is the expected result.
below is the source code.
<html>
<head>
<title>Attribute URL Test</title>
<script type="text/javascript">
(function () {
var div = document.createElement("div");
div.innerHTML = "<a href='/'></a>";
var urlok = div.firstChild.href === "/";
this.urlAttr = function (elem, name, value) {
if (typeof value !== "undefined") {
elem.setAttribute(name, value);
}
// if (urlok) {
// alert("you are here");
// return elem[name];
// } else {
// alert("you are there");
// return elem.getAttribute(name, 2);
// }
return urlok ?
elem[name] :
elem.getAttribute(name, 2);
};
})();
window.onload = function () {
var a = document.getElementById("a");
// Alerts out the full URL 'http://example.com/'
alert(a.getAttribute("href"));
// Alerts out the input '/'
alert(urlAttr("href", a));
};
</script>
</head>
<body>
<a id="a" href="/"></a>
</body>
</html>