2

jQuery Mobile に初期の問題がいくつかあります。Firefox (デスクトップ) を使用していて、jQuery Mobile スクリプトに次のようなものが含まれている場合、他の誰かがエラーを少し経験しているのではないかと考えていまし<head>た:

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>

Chrome と Firefox の両方で、大量の CSS エラーが発生しますが、無視できると思います。しかし、Firefox では、それに加えていくつかの JS エラーが発生し、ページが壊れているようです (レスポンシブ要素が、jQuery Mobile スクリプトを削除したときのようにレンダリングされません)。

JS エラー:

Empty string passed to getElementById(). @ http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.js:11100
Use of getPreventDefault() is deprecated.  Use defaultPrevented instead. @ http://code.jquery.com/jquery-1.9.1.js:3346

エラーがかなり冗長に見えることはわかっていますが、肥大化した JavaScript プラグインと、グレースフル デグラデーションに関するポリシーについては詳しくありません。この問題を抱えている他の人はいますか?

アップデート

Tim の回答に従って、これらの jQuery Mobile の「警告」が実際にページに影響を与えているという証拠をスナップショットしました。以下は、jQuery Mobile スクリプト タグをコメントアウトしたページです。

jQuery Mobile を使用しない場合

jQuery Mobile スクリプト タグが残っていると、ページは次のようになります。

jQuery Mobile を使用

jQuery Mobile を使用したかったのは、純粋にモバイルのタッチ/スワイプ イベントのためであることに注意してください。ハッシュ/Ajaxリンク機能を採用することに興味はありません。

4

3 に答える 3

4

Firefox が表示しているのは、エラーではなく警告です :)

jQuery Mobile のソースを見てみましょう:

// find present pages
var path = $.mobile.path,
    $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ),
    hash = path.stripHash( path.stripQueryParams(path.parseLocation().hash) ),
    hashPage = document.getElementById( hash );

Chrome 開発ツールを使用してその行にブレークポイントを設定すると (Firefox と Firebug はスクリプト全体をロードできないようです) path.parseLocation().hash、URL にハッシュがない場合は何も表示されないことがわかりdocument.getElementById( hash )、Firefox で見た警告がスローされます。

気になる場合は、Firefox 開発コンソールで警告をオフにできますが、jQuery Mobile を使用する場合は、ハッシュのない URL に対して警告が表示されると思います。Firefox が何かが間違っていることを伝えようとしているのではなく、Firefox が何かが間違っている可能性があることを伝えているだけであり、この場合はそうではありません。

他の警告に関しては、この議論が役に立つかもしれません。getPreventDefault()Android 2.3 との互換性のために、jQuery は deprecated を使用しているようです。

于 2013-09-18T04:16:40.857 に答える
3

はい、jQuery Mobile はロード時に「DOM を台無しに」します。たとえば、jQuery Mobile はコンテンツを「ページ」div にラップします。

ページの管理に必要なため、マークアップに含まれていない場合、フレームワークはバックグラウンドでページ ラッパーを挿入します ( Pages - jQuery Mobile Docs ) 。

しかし、一度に 1 つの jQuery Mobile ビットのみを含めることで、サイトを壊しているのが CSS なのか Javascript なのかを確認できます。

私も の呼び出しに関して同じ警告を受けてgetElementById()います。これは単なる警告であり、レイアウトには影響しないことを確認できます。 この警告を取り除くことについて具体的に尋ねましたが、役に立ちませんでした。

最後に、jQuery Mobile のカスタム ビルダーを使用して、関心のある部分 (タッチ機能など) だけを取得してみましたか?

于 2013-09-19T10:27:59.993 に答える
0

私のものは、Firefox を使用しているときにフォーマットから外れることがよくあります (他の多くの小さなバグも) テストのためだけの場合は、最高のパフォーマンスを得るために Google Chrome または Safari をお勧めします...

于 2013-09-18T01:10:12.243 に答える