0

jquerymobileを使用したRails3.2.9アプリがあります。

jquery_mobile_rails gemを使用してjqmを埋め込み、mobylettegemを使用してリクエストがモバイルデバイスから送信されたことを検出します。

開発環境(Webrick)ですべて正常に動作します

本番環境はapache/passengerに基づいています。rake Assets:precompileを実行すると、すべてうまくいくようです。assets/manifest.ymlを見ると、すべて問題ないように見えます。

ウェルカムページを呼び出すと、ログインフォームがブラウザに送信されますが、開発環境ではページにすべてのjqm形式がありますが、本番環境では、必要なJQMコードがhtmlに「挿入」されないため、たとえばタグは単純です。

<body>

それ以外の

<body class="ui-mobile-viewport ui-overlay-c">

したがって、ページを読み込んだ後、実行してHTMLをJQM固有のコードで「強化」する必要のあるJavaScriptはトリガーされないようです。

なぜこれが起こっているのかについてのヒントはありますか?

編集

assets
  javascripts
    application.js
    mobile
      application.js

views
  layouts
    application.html.erb
    application.mobile.erb

マニフェストファイルは次のとおりです。

javascripts/application.js

//= require jquery
//= require jquery_ujs
//= require_directory .


javascripts/mobile/application.js

//= require jquery.mobile
//= require_directory .
4

2 に答える 2

0

In case you would like to include a bunch of files from a particular directory (or a library ) ,you can use index manifest file (look for 2.1.2). It is really simple:

  • in your directory (app/assets/javascripts/mobile) create a file index.js with content :

    //= require_self
    //= require other_files_you_want
    

(and optionaly):

    //= require_tree .
  • then in your application.js manifest file you can require the library with the name of the directory , in which you have created the index.js file :

    //= require mobile
    

I would suggest, when you pass these steps, to remove the file app/assets/javascripts/mobile/application.js. It is not a good style in one app to have more than one file with the name application.js.

EDIT (after taking a look at the application.css):

I would suggest a couple of corrections in your manifest file application.css:

  • move the css code in a new file (for example app/assets/stylesheets/custom.css.scss)
  • if there are others css libs that you use , include them like normal (*= require your_css) in your application.css.
于 2013-02-16T08:02:19.250 に答える
0

この問題は、jquery と jquery mobile の最新バージョン間の非互換性が原因でした。

2012 年 10 月 2 日にリリースされた jquery mobile 1.2.0 には、最後の jquery バージョン 1.9.x に問題があります。

具体的には、jquery 1.9 では、jquery mobile 1.2.0 で使用されていた $.browser メソッドが削除されました。

したがって、jqwery mobile がページ上のオブジェクトを初期化しようとすると、エラーで終了します

TypeError: 'undefined' is not an object (evaluating 'e.browser.msie')

jquery 1.8.3の使用を強制することで問題を解決しました。Gemfileで

gem 'jquery-rails', '~> 2.1.4'

これには、アセット パイプラインに jquery 1.8.3 が含まれています。

BB Z10 の Web インスペクター (または Android 4 デバイスのリモート デバッグ機能) がなければ、モバイル プラットフォームでこのような JavaScript の問題を検出することはできなかったでしょう。

最後に、BlackBerry Z10 Web Inspector は Wi-Fi 経由で動作しますが、Android デバイスではリモート デバッグを行うには USB 接続が必要です。

于 2013-02-17T14:03:29.140 に答える