背景:我有一個下拉菜單,基本上與this other Mobile Safari Event Issue question上描述的下拉菜單相同:單擊菜單項以顯示下拉菜單,或者再次單擊菜單項或單擊頁面上的任何其他位置以隱藏菜單。隱藏下拉列表的jQuery綁定到跨越整個窗口的父級<div>
的單擊事件。此下拉菜單在所有瀏覽器(包括Mobile Safari)中都能正常工作,而且我只是爲了上下文而在此處描述它。onclick塊在移動Safari上覆制+粘貼?
問題:此onclick事件阻止Mobile Safari用戶(在iPod Touch 4.2.1和iPad 4.3.5上測試)獲得正常的觸摸並保持複製|粘貼到我們網站的任何地方。 D'哦!根據我的研究,似乎如果HTML元素定義了點擊處理程序,其包含的內容將不可複製?
我已經在這裏設立一個精簡的演示(更新:我使用的是直接的JavaScript這個演示,說明它不是一個jQuery的問題,但這個失敗,jQuery的。點擊工作()作爲):http://adamnorwood.com/ios-copypaste.html
如果您在Mobile Safari中打開該鏈接,則應該無法複製lorem ipsum文本,但是當您單擊文本以證明文本時,您將通過console.log()獲得消息點擊處理程序正在觸發。
下面是它的要點,如果該鏈路發生故障:
<div id="content">Imagine a large block of text here...</div>
<script>
document.getElementById('content').onclick = function() {
console.log('You just clicked me!');
}
</script>
事情我已經嘗試:使用onmouseup
-webkit-user-select: text
爲described here和其他事件而不是onclick(不)。
的onclick移動到
<body>
標籤或窗口對象圖6-4中iOS Handling Events documentation是相關的,但並沒有導致我做什麼什麼大的啓示......
有什麼想法?這是它應該工作的方式,還是我錯過了什麼?有沒有辦法使這個文本可選,但仍然點擊點擊處理程序?或者,也許我應該回到繪圖板,瞭解如何最好地隱藏下拉菜單,以便完全避免此問題?
如果使用事件委派,此問題尤其嚴重。例如,如果您要使用jquery的$('body')。委託(「。myclickable」,「click」,function(){...}),則整個頁面上的任何文本都不能在文本中進行選擇iOS。我的解決方法是低效地將點擊處理程序添加到我關心的每個鏈接中(同樣在混合文本和鏈接下拉菜單中) –