- - PR -
アンカータグにおけるhref属性とonClickイベントの制御
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-10 16:54
ブラウザIE5.0で実行した際、作成した以下のHTML・JSに関して以下のような現象が起こってしまいます。
=========HTMLソース=============== <a href="#.#" onClick="hoge()">hoge</a> <a href="#" onClick="hoge()">hoge</a> <a href="javascript:void(0)" onClick="hoge()">hoge</a> =========JSソース=============== function hoge() { ・・・・・・ form.method="POST"; //GETではなく、POST送信 form.submit(); } ================================ 【現象】 サブミット処理が発行されない。 【補足】 IE6であれば、サブミット処理が発行されることが確認できています。 対応方法としては、HTMLを <a href="javascript:hoge()" >hoge</a> に変更すれば問題ないことは認識しておりますが、 href属性の設定値をなんとか変更することで、対応可能な方法をご存知でしたら ぜひご教授の程よろしくお願いいたします。 | ||||
|
投稿日時: 2005-02-11 08:50
IE5.0 が手元にないのでわかりませんが、
いきなり "form" と参照せずに、documentオブジェクトから辿ってフォームを触ってみたらどうでしょうか。
みたいな感じで。 | ||||
|
投稿日時: 2005-02-11 11:12
onmousedown, onkeydownを入れて処理を奪ってしまうのはいかがでしょうか?
<a href="javascript:alert('href')" onclick="alert('click')" onmousedown="alert('mouse')" onkeydown="alert('key')">てすと</a> | ||||
|
投稿日時: 2005-02-14 09:08
私もIE5が手元にないので未検証の思い付きですが……。
aリンクのリクエスト発行で、直前のsubmitが捨てられているのではないかと思います。
みたいな感じでいかがでしょうか? #aを使うのではなくてspanを使用して、スタイルシートで表面上だけaに似せてやるという方法の方が単純な気もしないでもないですが…… | ||||
|
投稿日時: 2005-02-22 19:07
結果返答が遅くなりましたが、まず結果として以下に記させていただきます。
1.document.フォーム名.submit();について A.結果変わりませんでした。補足ですが、<a href="javascript:hoge()" >hoge</a> でサブミット処理は発行できておりますので、submit()処理的には問題ないのかと。 2.<a href="javascript:alert('href')" onclick="alert('click')" onmousedown="alert('mouse')" onkeydown="alert('key')">てすと</a>について A.KEYプレスとマウスクリックのイベントを消すことは可能でしたが、結果変わりませんでした。 3.return false; の取得について。 A.サブミットの発行が可能でした。お察しのとおり、「aリンクのリクエスト発行で、直前のsubmitが捨てられている」というのがPOINTだったようですね。 以前それをどう回避するかとうことで、 hoge()のなかで、真偽値を返すところまでは試してみたことがあったのですが、 それをhrefにまで返してあげる onClick="return hoge()">がさらにPOINTだったようです。 ご教授ありがとうございました。 |
1