3

iPhone Web アプリでスライダーを取得しようとしています。iuiを使用して UI を処理しています。スライダーは、iui.js と何らかの競合を引き起こしているようです。スライダーをドラッグすると、別のページを開こうとします。ただし、バーの一部をクリックするだけで問題なく動作します。スライドイベントが原因だと思っていましたが、どちらの場合もこのイベントがトリガーされるので、少し行き詰まっています。どんな助けでも大歓迎です。

簡単なテスト ケース (クリックしてスライダーを表示):

<head>
    <meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>

    <script type="application/x-javascript" src="http://www.joehewitt.com/iui/iui/iui.js"></script>
    <link href="http://www.joehewitt.com/iui/iui/iui.css" type="text/css" rel="stylesheet" />

    <script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
    <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
    <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.slider.js"></script>
    <link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />

    <script language="javascript">
        $(document).ready(function(){
            $("#slider").slider()
        });
    </script>
</head>
<body>
    <div class="toolbar">
        <h1 id="pageTitle"></h1>
        <a id="backButton" class="button" href="#"></a>
    </div>
    <ul title="slider test" selected="true">

        <li class="group">Page 1</li>       
        <li>
            <a class="mainnav" href="#page2">page 2</a>
        </li>
</ul>
    <div id="page2" title="foo.inc">
        <div id="slide_container">
            <div id="slider"></div>
        </div>
    </div>
</body>
4

2 に答える 2

2

私はiuiに精通していませんが、あなたが書いたとき:

ただし、このイベントは両方の場合にトリガーされます

私はあなたが何かを見逃したと思います(それはあなたの問題をうまく説明しているかもしれません). スライダーのコードを見ると、マウスのドラッグには別の一連のイベントがトリガーされることがわかります。_mouseCapture「 」と「 」を見てください_mouseDrag_mouseDragは " " をトリガーしますが、最初_slideに " " もトリガーします。_normValueFromMouse" _mouseCapture" については、スライダー コードに直接接続されていないため (一般的な jQuery UI コードを介して行われているようです)、確実に関与しているとは言えませんが、名前からして関与している可能性が高いと思われます。

いずれにせよ_mouseDrag, _normValueFromMouse、 、またはおそらく_mouseCapture(またはそれらが呼び出す関数) が、不注意に iui 関数を呼び出しているようです。私の推測では、iui はスライダー/jQuery UI 関数と同じ名前の関数をフックし、jQuery UI がそれをフックした後にそうし、その結果、スライドは iui 関数を呼び出します。

「goSomewhere」関数が jQuery UI で定義され、_mouseDrag. 通常は問題なく動作しますが、誰か (iui) が独自の「goSomewhere」関数を定義した場合、その関数は によって代わりに呼び出され_mouseDragます。

あるいは、問題は、スライダー コードが、通常は別のページに移動しない何かを呼び出していることかもしれませんが、iPhone ランドでは移動します。しかし、そうではないと思います。

それが役立つことを願っています。

于 2009-08-28T19:07:03.443 に答える
1

助けてくれてありがとう 他の誰かがこの問題を抱えている場合、iui 関数 'addEventListener' がスライダーのクリックを拾うことが原因です。選択した属性をタグ「#」に設定しようとすると、ページが壊れます。これを続行する前に、タグが本物かどうかを確認できます。完全な修正ではありませんが、機能します。

于 2009-08-31T14:42:08.717 に答える