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

これまでjavascript無効の人のために

<a href="test.html" onclick="test();return false;">link</a>

という感じで、無効の人はリンク先へ飛んで、有効の人はJavascriptを実行して処理する、といったコードを使っていました。
しかし、IE7では、onclickで false が帰ってきても、そのままリンクにいってしまうようで困っています。 IE6、Firefox2では思うように(onclickだけで止まる)動いてくれます。

もうこれは仕様のため、全面的に書き直さなければならないのでしょうか?
ご存じの方おられましたらご教示いただけると幸いです。

A 回答 (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で再度確認したあと、本家版を入れてみようと思います。

補足日時:2008/02/11 22:10
    • good
    • 0
この回答へのお礼

驚いたことに、IE6にもどしても、同様の現象になってしまいました。

IE7にする前までは、firefox2とIE6の両方で検証しながら開発していたので、間違いなく正常に動いていたんですけど、IE7にアップグレードしたせいなのか、そのほかに手を加えたせいなのか、わかりませんが、設定か何か変わってしまったのかもしれません。

いろいろ設定をいじってみようと思います。

お礼日時:2008/02/11 23:05

よくわからないですが、voidしてみては?



<a href="?test=1" onclick="void(alert(123));return false;">Click me</a>

この回答への補足

アドバイスいただきありがとうございます。

教えていただいたとおり、void をつけてみましたが、やはり変化はありませんでした。スクリプトの問題なのかブラウザの設定なのか、仕様なのか。新しいブラウザは難しいですね。

補足日時:2008/02/11 22:08
    • good
    • 0

簡単なコードを書いて試してみましたが、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は有効にはなっています。

補足日時:2008/02/10 21:20
    • good
    • 0
この回答へのお礼

原因がわかりましたので、ご報告させていただきます。

原因は、「インターネットオプション」の「詳細設定」の中の

「サードパーティ製のブラウザ拡張を有効にする」

という項目で、チェックを外すと return false が効くようになりました。
もっと自分で検証に時間をかけるべきでした。

ここでまとめてで申し訳ないですが、ご協力くださったsteel_gray様、yambejp様、taloo様、ありがとうございました。

もっともっとfirefoxのシェアが上がることを祈って締めさせていただきます。

お礼日時:2008/02/11 23:20

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