簡體   English   中英

iPad上的點擊事件響應緩慢

[英]Slow response to click event on iPad

我做了一個照片概念的演示,在兩個圖像之間切換以顯示它們之間的差異。

我有一個onMouseClick事件工作正常,除了在iPad上。 我的桌面上的響應是即時的,但平板電腦上的延遲可能是500毫秒?

這是正常的嗎? 還有另一種方法可以解決這個問題嗎?

使用Javascript:

var img1 = new Image();
img1.src = "http://watkinsfilm.com/wp-content/uploads/2012/09/19mm.jpg";

var img2 = new Image();
img2.src = "http://watkinsfilm.com/wp-content/uploads/2012/09/200mm.jpg";


function test() {
    if (document.pic.src == 'http://watkinsfilm.com/wp-content/uploads/2012/09/19mm.jpg') {

        document.pic.src = 'http://watkinsfilm.com/wp-content/uploads/2012/09/200mm.jpg';
    }
    else if (document.pic.src == 'http://watkinsfilm.com/wp-content/uploads/2012/09/200mm.jpg') {

        document.pic.src = 'http://watkinsfilm.com/wp-content/uploads/2012/09/19mm.jpg';
    }
}​

身體:

 <div>
   <table id="table-1" >
   <tr><td>
      <img id="img" src="http://watkinsfilm.com/wp-content/uploads/2012/09/19mm.jpg" name="pic" onMouseDown="test()"/>
       <img id="png1" src="http://www.thedigitaltrekker.com/wp-content/uploads/2012/03/logo-6smA.png"/>
Click on the image above to toggle between 19mm and 200mm <br>
   </td></tr>
   </table>
</div>
​

同樣在jsfiddle: http//jsfiddle.net/ntmw/R4pey/5/

iOS有目的地延遲點擊事件,以便手勢/滑動正常工作。 例如,當您觸摸元素時,您可能意味着滾動整個頁面,而不是觸發元素上的click事件。 要實現更精細的控制,請使用觸摸事件。

請參閱: https//developer.mozilla.org/en-US/docs/DOM/Touch_events

使用touchstart示例: http//jsfiddle.net/R4pey/7/

請注意,捕獲觸摸事件會產生影響,例如,您可能會覆蓋用戶期望的行為(如滑動)。

另請注意,您通常應獨立於標記(而非內聯)綁定事件,以實現標記和腳本的更清晰分離。

這是一個使用jQuery 的例子 ,它將事件與標記分開綁定,並處理clicktouchstart事件。 在Chrome 21,FF 15,IE9和iPad 3上測試過。

var url1 = "http://watkinsfilm.com/wp-content/uploads/2012/09/19mm.jpg";
var url2 = "http://watkinsfilm.com/wp-content/uploads/2012/09/200mm.jpg";

// preload from original code
var img1 = new Image();
img1.src = url1;

var img2 = new Image();
img2.src = url2;

// bind the click and touchstart events
$("#img").on("click touchstart", function(e){
    if (this.src == url1) {
        this.src = url2;
    }
    else if (this.src == url2) {
        this.src = url1;
    } 

    // When touch event fires, this is needed to prevent the click
    // event from firing as well as @RyanWheale noted in the comments.
    e.preventDefault(); 
});

請查看以下鏈接,了解更快速,更快速的按鈕: https//developers.google.com/mobile/articles/fast_buttons?hl = de-DE&ccs = 1

實現touchend事件處理程序

clicktouchstart不同, touchend事件會在沒有300ms延遲的情況下立即觸發。 如果您正在開發基於觸摸的WebGL或基於畫布的游戲,這可能是實用的,但是,您不能僅僅依賴於標准網頁中的touchend。

$('#id').on('touchstart',function(e) {                

    //code here...

});

我在IOS設備上遇到了一些圖像問題。 例如,我在我的網站上使用HTML5漸變和陰影(也是圖像),並在刪除圖像時注意到巨大的響應差異。

附加的點擊事件工作正常,但響應很慢,因為Safari似乎忙於圖像(不斷重繪)。

我用iPad3來測試它。 一個人寫了一篇關於IOS圖像問題的有趣文章。

見: http//roman.tao.at/dev/mobile-safari-memory-usage-with-images/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM