2013年2月13日水曜日

IEのバグ-Javascriptによるaタグのhref無効化

IEのバグを見つけたんで報告しときます。

HTMLのaタグにJavascriptを仕込んで、hrefを無効化させてJavascriptで遷移を実現したいとします。
hrefの無効化には以下の方法があります。
1.hrefに#を指定する
<a href="#" onclick="send();">リンク</a>

2.hrefにjavascript:void(0)を指定する
<a href="javascript:void(0)" onclick="send();">リンク</a>

3.onclickに「return false;」を追加する
<a href="" onclick="send();return false;">リンク</a>

4.onclickで呼び出すfunction内でreturn false;をする
function send(){
    window.open("xxxx.html");
    return false;
}
<a href="" onclick="send();">リンク</a>



で、この内の4に関してはIEで無効化できませんでした。
どうやら解釈として、以下の状態になっているものと考えればいいそうです。

<a href="" onclick="false">リンク</a>

つまりfunctionから帰ってくるのは「return false」ではなく「false」が返ってくる訳です。
なんでhrefが無効にならないんじゃないかなーと。
この解釈に関してはソースが無いんであまり鵜呑みにしない感じで聞き流してください。

IEでfunctionにreturn falseをさせる場合、以下のように記述する必要があります。

function send(){
    window.open("xxxx.html");
    return false;
}
<a href="" onclick="return send();">リンク</a>


returnしてきた値を更にonclick内でreturnするんですな。
ちなみに環境はIE7でござい。

0 件のコメント:

コメントを投稿