0

ユーザーがデバイスのホーム画面にブックマークを付けたら、スタンドアロンとして表示したいWebアプリがあります。私はiPhone5でテストしてきました。メタタグを使用して、Webアプリとして表示し、クリックイベントを処理するためのjQueryを少し使用して、すべてのリンクをスタンドアロン内に保持し、モバイルSafariを起動できないようにしています。退屈なテキストリンクのいくつかを画像リンクに変えようとするまで、これはすべて素晴らしく簡単です。PreventDefault()アクションは画像リンクを処理できないようで、常に「要求されたURL / undefinedはこのサーバーで見つかりませんでした。」を返しますが、テキストリンクと標準フォームボタンは問題なく機能します。これは学校の共同プロジェクトの一部であり、洗練されたインターフェースが必要であり、画像リンクはその大部分を占めています。

これが私がリンクを処理しなければならない単純なjsです:

$( document ).on(
    "click",
    "a",
    function( event ){
       event.preventDefault();  
       location.href = $( event.target ).attr( "href" );
    }
);

ボタンのHTMLは次のようになります。

<div id="loginBtn"><a href="memberLogin.php"><img src="CSS images/0-btn1.png" width="224" height="113" /></a></div>

任意の提案をいただければ幸いです。

4

2 に答える 2

0

要素aを1 つだけ持つ代わりに、images を使用すると、 aimgの 2 つの要素が作成されます。したがって、これはイベントの伝播PreventDefaultに関連していると思います。実際には preventDefault はデフォルト アクションを防止するだけで、その伝播を停止しません。これらのリンクを見てください。間違いなく役に立ちます。

于 2012-10-11T06:14:09.817 に答える
0

特定のイベントは、ターゲット要素から各親ノードを通り、ドキュメントの先頭 (または iOS の本文) に到達するまでバブルアップします。そのため、ドキュメント レベルでそれらを処理するのはかなり非効率的です。委任されたイベント ハンドラーは、動的に生成されるコンテンツに適しているため、ハンドラーの作成時に DOM に存在する最も近い親にハンドラーをアタッチできます。あなたの場合(あなたのタグが動的に生成されていない場合)、あなたはただ行うことができます$('a').on(...)

event.stopPropagation();また、ホーム画面に保存されたアプリがモバイル サファリで開かないようにするためにも使用する必要があります。

于 2012-10-11T06:12:24.217 に答える