2011-07-25 13 views
0

いくつかのレイアウト計算を行い、いくつかの要素のサイズを変更するモバイルWebサイトでjQueryを実行しています。ノキアでjQueryのドキュメントの準備ができていませんか? (AlertはNokiaのjQueryを修正しました。代替案を提案します)

私たちがサポートしているブラウザ(Nokiaの場合でも)でうまくいきましたが、ノキアに問題があるとの報告を受けました。

私はE72のシステムソフトウェアが昨年末に最後に更新されたことを知り、最新のバージョンをダウンロードしました。そして今、バグがあります。

アラートを追加する通常のJSデバッグプロセスを経て、すべてのレイアウト計算とサイズ変更を行っているアラートをトリガーすると、機能することがわかりました。アラートを省略すると、何も起こりません。

これまでの私はIEで何が起こったのか、何らかの理由でIEに追いつくためにJSの「一時停止」が必要な場合がありました。通常のトリックは、setTimeoutが0に設定されている機能をラップすることでした。

私はノキアでこれを試しましたが、運はありません。私はその後、1秒、10秒を試しましたが、まだ、運がありません。アラートのみで動作させることができます。

これに関する理論はありますか? JSのアラートが、アラート以外の何か、またはsetTimeoutで潜在的に複製される可能性のあるJS機能のタイミングに関して何かありますか?

更新日:

リクエストごとに、サンプルコード。これは、ドキュメントの準備ができてからトリガされた関数の内部にあります。

var extraWidths = $icon.width() + $button.width() + 20 + 5; 
var containerWidth = $panel.width(); 
var percentWidth = 100 - (Math.floor((extraWidths/containerWidth)*100)); 
$searchInput.css('width',percentWidth+'%'); 
alert('hello world'); // if I add this, Nokia works correctly. 

私は何をやっていることは、文書のレンダリング後、私は親コンテナの幅の合計から、それから取るために、その中に入力フィールドを調整することを差し引く、いくつかの要素の幅を計算していますということです残りのスペースを上げます(パーセント幅に設定)。

これはWebkit、Firefox、BlackBerry(OS5およびOS6)では問題なく動作するので、コードエラーだとは思えませんが、アラート以外の回避策が見つかったと思っています。

UPDATE 2:

より多くの研究の後、私は新しい理論を持っている:NokiaのWebブラウザではなく適切にjQueryのnotivy文書の準備ができたことありません。

私は、DOM要素の寸法を計算する必要があるラッピングjQueryは、setTimeoutの内部にラップするときにのみ動作することを発見しました。そして、それは任意の時間遅延ではありません...私は、ブラウザがDOMを適切にレンダリングするのにかかる時間よりも時間の遅延が長いことを確認する必要があります。私は、デバイスの速度とネットワークの速度が分かっていることを知ることができないので、私はそれを切ることはない1〜2秒の時間をこなさなければならない。

私の新しい質問:誰かがjQueryのdocument readyに関する問題を認識していて、それがNokiaデバイスで正しく動作していないのですか?もしそうなら、私たちは残念なことにjQueryの使用を再考する必要があります。

+0

違反しているコードを見ずに助けてくれるとは思わないでしょう。スーパーワイルド推測 - レイアウトを変更してから、レイアウトされる前にページからサイズ情報を読み戻します。 – jfriend00

+0

@ jfriend00ノキアの警告なしで動作しないコードブロックを追加しました。 –

+0

アラートの後にはどのようなコードがありますか?アラートはその前のコードに影響を与えるべきではありませんが、その後のコードに影響する可能性があります。私は何が後に来るのかを見なければならないと思う。あなたは '$ searchInput'のいくつかのサイズを読んでいますか? – jfriend00

答えて

1

$(document).ready(function()の代わりに、身体にIDを追加し、$(document.getElementById('bourbodyid')).ready(function()を使用してください。

他のものよりも回避策が間違っているとは限りません。

関連する問題