我已經遇到了同樣的問題。這是對我有用的東西。 (注意:我在Modernizr和jQuery環境下工作)
首先,我使用Modernizr's addTest Plugin API添加一個自定義的Modernizr類來測試iOS,它將相應地添加類appleios
或no-appleios
。
因爲在我的研究中,body
似乎是在自己的議程上觸發事件,所以我採取了一些預防措施,將所有文檔的內容用元素包裝在iOS上下文中。然後我添加一個事件處理程序到這個元素。
$(".appleios body").wrapInner('<div id="appleios-helper" />');
$("#appleios-helper").bind("mouseup", function(){return;});
本文前面提出的建議是使用void(0)
。我做了一些快速測試,發現void(0)
作爲事件剛剛沒有觸及身體被識別。當我以function(){return;}
的形式插入自己的「空」功能時,事情就開始奏效。
這一切都取決於移動Safari中沒有事件觸發的事實,除非該元素顯式地觸發了事件(Safari Web Content Guide。)。通過在包裝器中插入這個空事件,事情會冒泡到正文。
如果你正在做的有沒有這些庫的兩岸的JavaScript,同樣的效果可以在HTML標記
<html>
...
<body>
<div id="appleios-helper" onmouseup="function(){return;}">
...
</div>
</body>
</html>
這個工作對我的文檔的身體的任何部位接觸時,隱藏工具提示來實現。你的旅費可能會改變。