
これまでjavascript無効の人のために
<a href="test.html" onclick="test();return false;">link</a>
という感じで、無効の人はリンク先へ飛んで、有効の人はJavascriptを実行して処理する、といったコードを使っていました。
しかし、IE7では、onclickで false が帰ってきても、そのままリンクにいってしまうようで困っています。 IE6、Firefox2では思うように(onclickだけで止まる)動いてくれます。
もうこれは仕様のため、全面的に書き直さなければならないのでしょうか?
ご存じの方おられましたらご教示いただけると幸いです。
No.3ベストアンサー
- 回答日時:
test()の中でエラーになってるだけだと思ったのですが、、、?
test()はどの様な内容でしょうか?
<a href="aaa.html" onclick="return false;">検証</a>
これで動作が止まりますか?
IE6とIE7のチェックはどの様にされています?
パソコンを2台用意するとか、マルチブートしてるとか・・・
IE7 StandAloneを入れていると、動作がかなり変わるらしいですが、
インストールしていませんか?
http://tredosoft.com/IE7_standalone
今まで動いていたスクリプトがこれをインストールすると動かなくなったという話や、
CSSの表示の仕方も変わると聞いたことがあります。
もしそうなら、対策は、基本的にはIE7 Stand Aloneをアンインストールしかないと思います。
この回答への補足
test()はこちらの質問に投稿するために適当に書いただけなので、深い意味はありません。alert(123)でも同様になってしまいますので。
<a href="?test=1" onclick="return false;">Click me</a>
こんな形でテストしてみましたが、クリックすれば即リンクしていきます。
IE6とIE7のチェックはしていません。先週IE7にアップグレードするまえのIE6では同じコードで問題はありませんでした。
IE7は http://www.google.com/toolbar/ie7/intl/ja/ ここからダウンロードしてインストールしました。(ちょっとしたMSへの反抗^^;)本家とは何か違うのかもしれませんね。一度アンインストールしてIE6で再度確認したあと、本家版を入れてみようと思います。
驚いたことに、IE6にもどしても、同様の現象になってしまいました。
IE7にする前までは、firefox2とIE6の両方で検証しながら開発していたので、間違いなく正常に動いていたんですけど、IE7にアップグレードしたせいなのか、そのほかに手を加えたせいなのか、わかりませんが、設定か何か変わってしまったのかもしれません。
いろいろ設定をいじってみようと思います。
No.2
- 回答日時:
よくわからないですが、voidしてみては?
<a href="?test=1" onclick="void(alert(123));return false;">Click me</a>
この回答への補足
アドバイスいただきありがとうございます。
教えていただいたとおり、void をつけてみましたが、やはり変化はありませんでした。スクリプトの問題なのかブラウザの設定なのか、仕様なのか。新しいブラウザは難しいですね。
No.1
- 回答日時:
簡単なコードを書いて試してみましたが、IE7でそのような現象は確認できませんでした。
(return falseはちゃんと効く)IE7だけtest()の中でエラーが発生していてjavascriptの実行が中断された結果 hrefのurlに遷移しているのではないでしょうか?
この回答への補足
検証までしていただいて、ありがとうございます。
私のほうでももっと単純なコードで試してみました。
<a href="?test=1" onclick="alert(123);return false;">Click me</a>
これだと、123をalertして閉じたあと、?test=1 へ飛んでしまいました。この件についていろいろ検索してみたのですが、ほとんど情報もなく特殊な環境の時のみ発生するのかもしれませんね。
ちなみに、私の環境は、WindowsXP SP2 pro で IE7(7.0.5730.11IC) です。設定は比較的厳しくしている(ActiveXは常にダイアログなど)ので、なにか影響しているのかもしれません。alert()は動いているのでJavascriptは有効にはなっています。
原因がわかりましたので、ご報告させていただきます。
原因は、「インターネットオプション」の「詳細設定」の中の
「サードパーティ製のブラウザ拡張を有効にする」
という項目で、チェックを外すと return false が効くようになりました。
もっと自分で検証に時間をかけるべきでした。
ここでまとめてで申し訳ないですが、ご協力くださったsteel_gray様、yambejp様、taloo様、ありがとうございました。
もっともっとfirefoxのシェアが上がることを祈って締めさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
RegularExpressionValidatorの...
-
削除ボタンの確認ダイアログを...
-
JavaScript ログアウト処理
-
slickのレスポンシブ > center...
-
<input>の選択肢をプルダウンメ...
-
Selectボックスの幅を自動で広...
-
javaScriptの変数をJavaの変数...
-
JavaScriptのfileオブジェクト...
-
<JavaScript>tableタグを入力不...
-
ASP.NETでNAME属性を固定にしたい
-
クリックされた罫表セルの行番...
-
同じ名前のセレクトがある場合...
-
onchangeイベントを強制的に発...
-
プルダウンで選択された値を別...
-
二次元配列に数字をランダムに...
-
sessionの値でボタンを活性・非...
-
JQueryで2つのテキストフィー...
-
cookie使用時にundefinedと表示...
-
doPostBack 関数について
-
【FORM】 リンク文字で submit...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
return trueとreturn falseの用...
-
slickのレスポンシブ > center...
-
COBOLの数字チェック
-
ラジオボタンのNullチェック
-
正規表現で複数マッチ条件で悩...
-
未入力のラジオボタンに、alert...
-
2次元配列で2項目についてソー...
-
テキストボックスの値が数字で...
-
ドロップダウンリストボックス...
-
ツリービューのチェックボック...
-
フォームの入力チェックをする...
-
TEXTAREAに入力した改行コード...
-
JavaScript ログアウト処理
-
度胸試しのJavaScript
-
form の onSubmit がコールされ...
-
コピペを禁止するtextarea
-
Tabキーでのカーソルの移動...
-
JavaScriptde途中で、「exit」...
-
IE6+VBScript環境でF5を効かな...
-
RegularExpressionValidatorの...
おすすめ情報