0

タップホールド イベントの処理で深刻な問題が発生しています。現時点では、この問題は IOS でのみ発生していることに注意してください。

jQuery Mobile アプリケーションがあります。そのアプリケーションにはリストがあり、それらのリスト項目の 1 つでタップホールドが呼び出されると、モーダル ポップアップが開きます。ウィンドウの中央にポップアップが開きます。ユーザーが画面から指を離すと、指の下の要素で mouseup および mousedown (クリック) イベントがトリガーされます。ポップアップが指の下にある場合、問題はありません。「モーダル」グレー領域が指の下にある場合、ポップアップはすぐに閉じます。この動作は正常です。通常ではないのは、これらのイベントが呼び出されるという事実です。簡単にハッキングできますが、それを行うのは私の性質ではありません。原因が知りたいです。

私の問題を説明するために小さなフィドルを作成しましたが、これをテストするには iPad が必要です。iPad エミュレーターで問題を再現できませんでした。

http://jsfiddle.net/yuFpa/38/

<code>
    <!DOCTYPE html> 

    <html>    
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.css" />
        <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
            <script src="http://code.jquery.com/mobile/1.2.0-alpha.1/jquery.mobile-1.2.0-alpha.1.min.js"></script>
        </head> 

        <body> 
            <div data-role="page" id="one">        
                <div data-role="header">
                    <h1>Taphold dialog test</h1>
                </div>

                <div data-role="content">                
                    <ul data-role="listview">
                        <li>
                            <a href="#">Dummy</a>
                        </li>

                        <li>
                            <a id="taphold-popup-btn" href="#">Taphold me to open popup</a>
                        </li>

                        <li>
                            <a href="#">Dummy</a>
                        </li>
                    </ul>

                    <div data-role="popup" id="taphold-popup" data-overlay-theme="a">
                        <p>This is a completely basic popup, no options set.<p>
                    </div>
                </div>
            </div>
        </body>
    </html>​
</code>
<code>
    $(document).ready(function() {
        $('#taphold-popup-btn').bind('taphold', function(e) {
            e.stopImmediatePropagation();
            e.preventDefault();        

            var $popup = $('#taphold-popup');
            $popup.popup();
            $popup.popup('open');
        });        
    });
</code>
4

0 に答える 0