« 情報収集のための11の質問 | メイン | 弊社サービスへの断続的なアクセス断についてのお詫び »

2005年12月07日


javascript: link.href を変更するとリンクテキストが壊れます

(自己メモ)

javascript で ドキュメント内にある link (aタグ) の href を書き換えようと思っていろいろやっていたときに不思議な挙動(不具合?)を見つけたのでメモ。

たとえば、ページ内のリンク URL にすべて ?no-rss という引き数を(あとからスクリプトで)追加したい、とします。

そんなときは次のような javascript を埋め込めば簡単に実現できます。

<script type="text/javascript">
<!--
var links = document.links;
for (var i = 0; i < links.length; i++){
 if (links[i].href.indexOf("http://akalabo.net/") == 0){
  links[i].href += "?no-rss";
 }
}
//-->
</script>


もちろん、DOM で getElementById() + setAttribute("href", 値) とやっても構いません。
#古いブラウザ考えて とりあえず Link オブジェクトを使っています。


さて、これで OK なはず・・・と、思いますよね。。。

ところが・・・
#いや、ひょっとしたら常識なのかもしれないので怖いのですが。。。


例えば

<a href="/">トップに戻る</a>

というリンク。

これは問題なく

<a href="/?no-rss">トップに戻る</a>

と変換されます。


が、リンクテキストの中に「@」マークが「途中」に含まれているものがあったとします。

たとえばこんなやつ。

<a href="/">トップ@戻る</a>


これが Win IE6 だと、次のように変換(表示)されてしまうのです。

<a href="/?no-rss">http://akalabo.net/?no-rss</a>


はい、リンクテキストが壊れます。


どうも、テキスト中の「@」マークが悪さをしている模様。
#Firefox などではこの問題は発生しません。


ということで、もし link.href をセットするスクリプトを実行しているなら、直後に link.innerText や link.innerHTML の再設定もお忘れなく。というか、忘れないように<自分。


#バグレポートに載ってるんだろうと思いつつ、探せず...


管理人の運営サービス:

メッセンジャー -- 会議室型メッセンジャー : フレッシュミーティング

RSS配信サイト -- あらゆるサイトのRSSを配信:My RSS.jp

ブログSEO対策 -- ブログ専用。検索エンジンのアクセス解析に:トラックワード

RSSリーダー -- リーダーだけの快速RSSリーダー:フレッシュリーダー

人気ブログランキング -- ブログの更新頻度と人気 度を測定:フィードメーター

リンク元アクセス解析 -- リンクが張られた瞬間にRSSで通知するアクセス解析:トラックフィード

ブログRSS検索 -- 旬な情報をお届けします:フレッシュフィード

RSS配信・作成 -- オンラインでRSSを作成・配信・分析できるサービス:RSSフィード.cc

RSSリンク集 -- RSSの簡単リンク集:RSSリンク集

ブックマーク -- メールでブックマークを実現:あとで読む

bookmark -- an email based bookmark service:toread.cc

RSSとは -- RSSに関する情報が満載のサイトです

投稿者 aka : 日時 2005年12月07日 19:01

トラックバック

このエントリーのトラックバックURL:
http://210.188.206.194/mt-tb-sf.cgi/295

このリストは、次のエントリーを参照しています: javascript: link.href を変更するとリンクテキストが壊れます:

» JavaScriptでアンカータグのhref属性を変更するとIEでリンクテキストが壊れる件 from Web Artisan Blog - ウェブ アルチザン ブログ
Research Artisanでは、外部リンクのクリック数を測定する、 ”クリック測定”機能があります。 >クリック測定でアフィリエイトを成功に... [続きを読む]

トラックバック時刻: 2005年12月22日 16:22