8
4

7 回答 7

6

我有同样的问题。事实证明,这是 iOS 5 版本的 Safari 中的一个 bug。不会在新旧版本或任何其他浏览器或平台中发生。

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

似乎很棘手。我用这段代码测试过:

<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. 点击
  4. 向上滑动

每次点击我都会:

  1. 向上
  2. 点击
  3. 没有向上滚动

有趣的是,这仅在代码包含警报时才有效。如果代码中没有警报,则每次点击时都会向上滚动......

当然,移动 safari 中的 href 有一些魔力,当您按住链接(不抬起手指)时,您可以看到:操作表出现(“复制”、“打开”、“在...中打开”等。 )其中一个事件被触发之前。

于 2012-04-19T09:55:28.787 回答
1

我实际上尝试过

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

它运作良好

于 2012-08-15T12:01:03.493 回答
0

Basically, I went with a similar solution, but backed up a bit more with some conditional checking ... this is jQuery based and used for login in Sitefinity.

  if ($.browser.safari) {
    $('.sfSubmitBtn').attr('onclick', 'event.preventDefault(); return false;');
  }

I did find that using the event.preventDefault() caused a similar issues to begin occurring in some versions of IE.

于 2014-04-28T13:51:20.657 回答
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 回答
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;
}

据我记得,当我遇到这些变体之一时,它解决了同样的问题。

第一个变体要好得多,因为你不混合 html 和 javascript

于 2012-08-24T18:18:02.270 回答