アプリ版:「スタンプのみでお礼する」機能のリリースについて

javascriptにてonclickを無効にしたい

下記のように、onclickイベントキャンセルを書きましたが、
onclickのjavascriptが実行されます。
何かヒントはありませんか?


<html>
<head>
<script language="JavaScript">

document.onclick = function(e) {
event.returnValue = false;
}
</script>
</head>
<body>
<a href="a.htm" onclick="alert('onclick');">onclick有り</a>
<a href="a.htm">onclick無し</a>
</body>
</html>

※環境 Windows2000(sp4)+ie6(sp1)

A 回答 (3件)

event.returnValue = false についてはNo1様がすでにご指摘の通りです。



ご質問は、ドキュメントレベルででイベントを取得してキャンセルしたいという意図でしょうか?

バブリングの伝播順だと要素のonclickイベントが発生してからドキュメントへ伝播するので、仮にキャンセルが可能だったとしても無理ということになります。
http://wiki.bit-hive.com/tomizoo/pg/JavaScript%2 …

fx系であれば、documentでキャプチャリングフェーズでイベントを取得して、stopPropagation()で伝播を停止することで、ご質問で意図しているようなことは可能ですが、IEはこの仕組みに対応していないようです。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/ …

IE9からはできるのかも知れません。(ちゃんと調べてませんけど)
http://msdn.microsoft.com/en-us/library/ff975245 …


IE6の場合だと、最初に要素をサーチしてonclickが設定されていたらキャンセルするとかの方法でもよいのなら可能でしょう。(atachEventで設定されているものは拾えませんが)

というか、HTMLソースを直接書き替えると言う単純な方法ではダメなのでしょうか?
    • good
    • 0
この回答へのお礼

fujillinさん コメントありがとうございます

やりたい事は、2重クリックの場合は、無効にしたいことでした。
そこで、実際は、documenreadyState=complete以外は、イベントをキャンセルすことのにより対応するつもりでした。

そこで、それぞれのonclickに書くのが面倒なので、一括で書けないかと思い上記のような事を考えました。

お礼日時:2011/04/07 08:13

No2です。



>やりたい事は、2重クリックの場合は、無効にしたいことでした
1度しか実行したくないということでしょうか?

(↓)が参考になるかも
 http://oshiete.goo.ne.jp/qa/6578859.html
    • good
    • 0
この回答へのお礼

fujillinさん コメントありがとうございます

参考にしてみます

お礼日時:2011/04/07 13:26

>onclickイベントキャンセル



意味取り違えています。キャンセルしています。この場合デフォルトとは、Aタグの機能でhrefに指定されているファイルへ飛ぶ事です。

http://msdn.microsoft.com/ja-jp/library/cc392242 …

あたりが参考になるのでは、優先順位はエレメントの設定です。

なお、ブラウザの種類によっても微妙です。
    • good
    • 0
この回答へのお礼

0909unionさん コメントありがとうございます

お礼日時:2011/04/07 08:00

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