2025/8/21

<html><body> <a href="http://stanch.s602.xrea.com/">http://fffffffffffffffff</a> <script type="text/javascript"> var a = document.body.getElementsByTagName("a")[0]; a.href = a.href + "blog/"; // なお、このようにsetAttributeに変えても全く同じ動作だった //a.setAttribute("href", a.getAttribute("href") + "blog/"); </script> </body></html>
上のようにinnerTextが「http://」で始まる状況下でhrefを書き換えた場合、innerHTMLまで一緒に書き換わってしまう。

表示されるのが
「http://fffffffffffffffff」
ではなく
「http://stanch.s602.xrea.com/blog/」
になってしまう。

これでしばらくハマった・・・

なお、Firefoxなどは書き換わらずに済んだ。





また、当然httpsの場合でも書き換えられてしまう。
innerHTMLの内容が以下で始まる時に書き換えられてしまうっぽい。

http://
https://
ftp://
file://
nntp://
ldap://
mailto:    ← 「//」が無くても書き換えられる
news:    ← 「//」が無くても書き換えられる
snews:    ← 「//」が無くても書き換えられる
telnet:    ← 「//」が無くても書き換えられる





以下で始まるものなどは書き換えられずに済んだ。

smtp://
javascript:
#
tn3270://
rlogin://




一応サンプル動作確認用↓

http://fffffffffffffffff

予想結果としてはリンク先は http://stanch.s602.xrea.com/blog/ になるがinnerTextは http://fffffffffffffffff のままというのが正しそうだが、IE6だと http://fffffffffffffffff の部分も http://stanch.s602.xrea.com/blog/ に書き換えられてしまう。
function ChgHref() { var a_elm = document.getElementById("SampleElm_A"); a_elm.href = a_elm.href + "blog/"; }

コメント一覧

下に行くほど新しいコメントです

この記事にコメントを投稿した人はまだいません

コメントをどうぞ

名前: