Firefox1.5の話。多分1.0.xでも同じ。
a要素のhref属性に使用できない文字が入っていた場合、hrefプロパティにはエスケープされた文字列が入る。どの文字コードによってエスケープされるかは状況によって異なる。例えば、
<p> <a href="こんにちわ">こんにちわ</a> </p>
とあった場合、
var ancs = document.getElementsByTagName( "a" ); dump( ancs[0].getAttritbute( "href" ) ); こんにちわ dump( ancs[0].href ); file://%82%B1%82%F1%82%C9%82%BF%82%ED
と、HTML文書の文字コード(この場合Shift-JIS)でエスケープされているが、
<p> <a href="mailto:こんにちわ">こんにちわ</a> </p>
とすると、
var ancs = document.getElementsByTagName( "a" ); dump( ancs[0].getAttritbute( "href" ) ); mailto:こんにちわ dump( ancs[0].href ); mailto:%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%82%8F
のように、UTF-8でエスケープされた文字列が入っている。またどちらの場合でも、親要素のinnerHTMLプロパティを見てみると、
var pars = document.getElementsByTagName( "p" ); dump( pars[0].innerHTML ); <a href="%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%82%8F">こんにちわ</a>
というように、href属性にはUTF-8でエスケープされた文字列が入っている。javascriptで動的なページを作る際、DOMに則って作るのではなくinnerHTML書き換えを用いる場合は注意が必要。