8
4

7 に答える 7

6

私も同じ問題を抱えていました。iOS 5 バージョンの Safari のバグであることが判明しました。新しいバージョンや古いバージョン、または他のブラウザーやプラットフォームでは発生しません。

次のようpreventDefaultに、既存の に加えて、onclick イベント ハンドラに追加することで解決しました。return false

<a href="#" onclick="event.preventDefault(); return false;">click me</a>

理想的ではありませんが、問題は解決します。

于 2012-10-24T15:50:35.343 に答える
2

友人の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="#"この設定で を削除するとうまくいきました。

于 2012-11-29T10:11:44.860 に答える
1

実際に使ってみた

<a href="javascript:void(0)" onclick="return false">click me</a>

そしてそれはうまくいきます

于 2012-08-15T12:01:03.493 に答える
1

トリッキーなようです。私はこのコードでテストしました:

<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 でページを更新して初めてタップすると、次のようになります。

  1. 以上
  2. クリック
  3. スクロールアップする

次のタップごとに:

  1. クリック
  2. 上にスクロールしない

面白いことに、これはコードにアラートが含まれている場合にのみ機能します。コード内にアラートがない場合、タップするたびに上にスクロールします....

確かに、モバイル サファリには、hrefs を使用した魔法がいくつかあります。これは、リンクを (指を離さずに) 保持すると表示されます。アクション シートが表示されます (「コピー」、「開く」、「... で開く」など。 )いずれかのイベントが発生する前。

于 2012-04-19T09:55:28.787 に答える
0

まず、これを試してください:

<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を混在させないため、最初のバリアントの方がはるかに優れています。

于 2012-08-24T18:18:02.270 に答える
0

なぜだめですか?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;
}
于 2012-04-19T07:55:54.227 に答える