在手機webkit瀏覽器中,用戶在某一些按鈕上長按3秒鍾后,會彈出一個系統的列表,ios和android各自展現不一樣,列表可以有復制或在在新窗口打開的等操作,這種體驗對於按鈕來說是不需要的,按鈕上是綁定事件,有特殊功能,而這里系統把它當做一個鏈接的意義。查看了代碼,原來是一個a標簽,鏈接地址為空。
<a href="#" class="btn">查看余額</a>
找了資料后,ios平台有個解決辦法
可以通過控制當前元素的-webkit-touch-callout的樣式屬性為none;屬性來禁止觸發系統的菜單
a{-webkit-touch-callout:none}
這里補充-webkit-touch-callout:none 的功能,測試結果如下:
1.ios 長按時不觸發系統菜單
2.ios 和 android 長按時不觸發下載圖片菜單
對於ios,我們可以使用-webkit-touch-callout:none,那么如何如何禁止 android 系統默認菜單呢?
實踐中,發現在android2.x系統中設置a標簽的href屬性為 javascript:void(0) ,即鏈接屬性為空,可以禁止系統默認菜單
<a href="javascript:void(0);" class="btn">查看余額</a>
而對於部分android4.x系統,這種做法又失效了,android機器真是各種瘋啊...
后來在 Web前端業界傳說中氛圍最好群——鬼懿IT 尋求幫助
,
要使用a標簽目前還是找不到最優的解決辦法,如果把a標簽用 button 或者 input button 來替換的確可以解決該問題,但是沒有a標簽被點擊時產生的半透明灰色背景效果,用戶體驗一般
<button class="btn">查看余額</button> 或者 <input type="button" class="btn" value="查看余額"/>
一點經驗談,希望給遇到過的童鞋帶來幫助,如果大家有更好的意見,歡迎留言討論~