2012-04-19 27 views
8

在移動設備的Safari瀏覽器,如iphone或ipad,<a href="#" onclick="return false">不會阻止默認行爲,頁面仍然被重定向到'#',爲什麼......? 像這些的html代碼:在移動設備的Safari瀏覽器中,<a href="#" onclick="return false">不起作用,爲什麼?

<div style="height:1000px; width:100px"></div> 
<br />  
<a href="#" onclick="return false">click me</a> 

當點擊在手機類設備的Safari瀏覽器,它可以追溯到頁面的頂部...

+0

onclick =「javascript:return false;」 ? – adali 2012-04-19 07:54:01

+0

是否檢查過桌面瀏覽器上的工作情況?我認爲這與觸摸與鼠標事件有關。 – 2012-04-19 08:05:02

+0

而不是「onclick」你可以嘗試「onkeyup」,「onmouseup」或「onkeypress」 – Tobi 2012-04-19 08:10:01

回答

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; 
} 
+0

我編輯了這個問題,請忽略之前的js代碼。只是html,但仍然不起作用... – skyworm 2012-04-19 08:03:40

+1

'onclick'屬性需要JavaScript代碼而不是URL。因此'javascript:'只是多餘的(儘管至少它不會拋出語法錯誤,因爲它是有效的代碼)。 – 2012-04-19 08:46:57

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. 點擊
  3. 沒有向上滾動

搞笑的是,這僅適用,當代碼包含警報。如果代碼內沒有提醒,每次點擊時都會發生滾動。...

確定在移動Safari中有hrefs的一些魔法,您可以看到,當您拿着鏈接時(不用提起手指):An操作表出現(「複製」,「打開」,「打開......」等)之前其中一個事件被解僱。

1

我實際上

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

嘗試和它運作良好

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; 
} 

至於我記得,這些變異體的一種解決同樣的問題,當我有它。

第一種變體好得多,becouse你不要混用HTML和JavaScript

5

我有同樣的問題。事實證明,這是Safari 5的iOS 5版本中的一個錯誤。不會在更新或更舊版本或任何其他瀏覽器或平臺上發生。

我解決它通過添加preventDefault到onclick事件處理程序,除了現有的return false,就像這樣:

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

不理想,但它確實解決問題。

+0

在我的情況下,不需要=「...」只是「onclick」符合其目的 – MoshMage 2014-02-10 13:26:52

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="#"這個設置對我的工作。

0

基本上,我用類似的解決方案,但備份了一些條件檢查...這是基於jQuery和用於在Sitefinity登錄。

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

我沒有發現使用event.preventDefault()造成一個類似的問題,開始在IE瀏覽器的某些版本中出現。

相關問題