2012-04-14 107 views
4

我有這樣的代碼在我的網頁:<a href onClick="return false;">不適用於Safari/iOS?

<a href onClick="return false;">Press me!</a> 

鏈接放置在跨度內有一個有用的onclick事件。

現在,在Chrome和Firefox中,這個功能完美無缺。鏈接被點擊,有用的事件被執行,每個人都很高興。在使用默認Safari瀏覽器的iOS(iPhone和iPad)中,這會失敗 - 在點擊鏈接之後,整個頁面將被重新加載,並且永遠不會執行有用的事件。

我也試過

<a href="#" onClick="return false;">Press me!</a> 

我明白這是這樣做的錯誤的方式。在Chrome和Firefox中它運行良好,但是在iOS的Safari中它跳回到頁面的開頭(但是它執行有用的事件,所以從某種意義上說它更好)。

我錯過了什麼?

回答

3

從你的描述來看,它好像是iOS瀏覽器JS實現中的一個bug(也許創建一個最小代碼來演示它?)。

一個簡單的解決方法是將<a href...>替換爲<span style="cursor:pointer;">

+0

這不是我希望的解決方案,但它似乎確實是iOS中的一個錯誤,並且解決方法奏效。 – 2012-04-14 19:51:45

1

你試過綁定純粹從JavaScript的元素?

<a href="#" id="nogo">Foo</a> 

document.getElementById('nogo').onclick = function(ev) { 
ev.preventDefault(); 
}; 
+0

這是一個有問題的解決方案,因爲有很多這樣的鏈接,它們是由一個更大的系統動態創建的(phpbb,就此而言,鏈接用於顯示擾流文本)。 – 2012-04-14 09:52:10

+0

啊不夠公平,沒有指定,所以不能猜測。你可以使用jquery嗎?那麼你可以用一個命令綁定它們,甚至新創建一個。 – GillesC 2012-04-14 09:53:38

+0

我可以做一些黑客攻擊,但我更願意保持在規則之內,即提供一個html代碼,它將替換消息中的破壞者標籤,而不用使用viewtopic.php本身。我沒有指定上下文,因爲在我看來,這是一個問題,我不瞭解鏈接工作的基本方法。 – 2012-04-14 09:56:10

7

您可以設置href="#",我注意到跳轉到頁面頂部。 #是一個頁內定位符,我相信它指的是頁面的頂部。我並不清楚所定義的行爲。但是,唉,你想取消它。

在iPhone 5.0.1模擬器中,將取消方法組合起來並且不滾動到頂部。這是我完整的test.html文件。它可以在模擬器,Chrome和OS X Safari中運行。

<div style="height: 1000px; background-color: blue;"></div> 
<a href="#" onClick="event.preventDefault(); return false;">Poke it!</a> 
<div style="height: 1000px; background-color: red;"></div> 

對於記錄,刪除event.preventDefault();重複您的錯誤。

+0

謝謝,我沒有考慮使用preventDefault。 – 2012-04-15 09:15:24

相關問題