なぜ "return false" が動作しないのでしょう?
重要性: 3
なぜ下のコードで return false
がまったく動かないのでしょうか?
<
script
>
function
handler
(
)
{
alert
(
"..."
)
;
return
false
;
}
</
script
>
<
a
href
=
"
http://w3.org"
onclick
=
"
handler
(
)
"
>
the browser will go to w3.org</
a
>
ブラウザはクリックでそのURLを辿りますが、それをしたくありません。
どのように修正しますか?
ブラウザが onclick
のような on*
属性を読み込むとき、そのコンテンツからハンドラを生成します。
onclick="handler()"
の場合、関数はこうなります:
function
(
event
)
{
handler
(
)
// onclick のコンテンツ
}
今、handler()
により返却された値は使われておらず、結果には影響しないことが分かります。
修正例です:
<
script
>
function
handler
(
)
{
alert
(
"..."
)
;
return
false
;
}
</
script
>
<
a
href
=
"
http://w3.org"
onclick
=
"
return
handler
(
)
"
>
w3.org</
a
>
もしくは、このように event.preventDefault()
を使うこともできます:
<
script
>
function
handler
(
event
)
{
alert
(
"..."
)
;
event.
preventDefault
(
)
;
}
</
script
>
<
a
href
=
"
http://w3.org"
onclick
=
"
handler
(
event)
"
>
w3.org</
a
>