7 に答える
私も同じ問題を抱えていました。iOS 5 バージョンの Safari のバグであることが判明しました。新しいバージョンや古いバージョン、または他のブラウザーやプラットフォームでは発生しません。
次のようpreventDefault
に、既存の に加えて、onclick イベント ハンドラに追加することで解決しました。return false
<a href="#" onclick="event.preventDefault(); return false;">click me</a>
理想的ではありませんが、問題は解決します。
友人のiPhoneでリンクが正しく機能しないという同じ問題が発生しました。私は自分のものを削除しました href="#"
が、ボタンは JavaScript を使用してあなたとは少し異なる設定をしていることを除いて、ボタンは完全に正常に動作します。
私が設定した方法は次のようなものです
$(document).ready(function () {
var buttons=$('#button01,#button02,#button03,#button04,#button05');
buttons.click(function(){
$(this).removeClass('off-class').addClass('on-class');
buttons.not(this).removeClass('on-class').addClass('off-class');
})
次に、ポップアップしたいフレームをトリガーします
if ($('#button01').hasClass('on-class')){
$('#frame01').removeClass('hidden');
$('#frame02,#frame03,#frame04,#frame05').addClass('hidden');
}else{
$('#frame01').addClass('hidden');
あなたの設定方法はわかりませんが、href="#"
この設定で を削除するとうまくいきました。
実際に使ってみた
<a href="javascript:void(0)" onclick="return false">click me</a>
そしてそれはうまくいきます
トリッキーなようです。私はこのコードでテストしました:
<body>
Hallo
<br>
<div style="height:2000px; width:100px"></div>
<br />
<a href="#" onclick="alert('click');return false;"
onmousedown="alert('down');return false;"
onmouseup="alert('up');return false;"
onmouseover="alert('over');return false;"
onmouseout="alert('out');return false;">
click me</a>
</body>
何が起こるかというと、iPhone でページを更新して初めてタップすると、次のようになります。
- 以上
- 下
- 上
- クリック
- スクロールアップする
次のタップごとに:
- 下
- 上
- クリック
- 上にスクロールしない
面白いことに、これはコードにアラートが含まれている場合にのみ機能します。コード内にアラートがない場合、タップするたびに上にスクロールします....
確かに、モバイル サファリには、hrefs を使用した魔法がいくつかあります。これは、リンクを (指を離さずに) 保持すると表示されます。アクション シートが表示されます (「コピー」、「開く」、「... で開く」など。 )いずれかのイベントが発生する前。
まず、これを試してください:
<a href="#" id='test'>click me</a>
jsで:
$('a#test').click(function(event){
event.preventDefault();
});
次に(最初のバリアントが機能しない場合):
<a href="#" id='test' onclick='return DummyFunction();'>click me</a>
jsで:
function DummyFunction(){
return false;
}
私が覚えている限り、これらのバリアントの1つは、私がそれを持っていたときに同じ問題を解決しました。
htmlとjavascriptを混在させないため、最初のバリアントの方がはるかに優れています。
なぜだめですか?falseを返すだけでなく、関数を呼び出す必要があると思います...
<a href="#" onclick="javascript:myFunction()" id="test_a">click me</a>
function myFunction() {
var elem = document.getElementById('test_a');
if (elem.addEventListener) {
elem.addEventListener('click', function() {
alert('clicked');
}, false);
} else {
elem.attachEvent('onclick', function() {
alert('clicked');
});
}
return false;
}