dポイントプレゼントキャンペーン実施中!

<body onbeforeunload="alert('quit');">
<a href="#" onclick="foo();">教えて!</a>
<a href="javascript:foo();">goo</a><br>

↑このように書くと、
「教えて!」をクリックすると、foo()関数のみが実行されますが、
「goo」をクリックすると onbeforeunload のイベントが発生し、alert実行後foo()関数が実行されます。

href に記述した javascript についての詳しい処理内容についてご存知の方がいましたら教えてください。
クリックしたときのこの二つの違いってなんなのでしょうか??

A 回答 (2件)

onbeforeunloadは、ブラウザが閉じられたり、現在のページから移動したときに実行されます。


リンクでhref="#"を指定した場合は、自ページを意味しますが
そうでない場合は、別ページへの移動ということになるためそのような動作になるのではないでしょうか

<a>は基本的にはリンクを表すものですから、単に関数を実行したい場合は、ボタンを使うのがいいと思います。
<button type="button" onclick="foo()">goo</button>
文字列のままで、リンクのようなアンダーバーが必要というのであれば
<span style="text-decoration:underline" onclick="foo()">goo</span>とか
<span onclick="foo()"><u>goo</u></span>
とかするといいかもしれません。
    • good
    • 0

onbeforeunloadは、ブラウザが閉じられたり、現在のページから移動したときに実行されます。


リンクでhref="#"を指定した場合は、次ページを意味しますが
そうでない場合は、別ページへの移動ということになるためそのような動作になるのではないでしょうか

<a>は基本的にはリンクを表すものですから、単に関数を実行したい場合は、ボタンを使うのがいいと思います。
<button type="button" onclick="foo()">goo</button>
文字列のままで、リンクのようなアンダーバーが必要というのであれば
<span style="text-decoration:underline" onclick="foo()">goo</span>とか
<span onclick="foo()"><u>goo</u></span>
とかするといいかもしれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!