7

この問題をデバッグするために、プラグインの骨組み(つまり、機能がなく、構造だけ)に切り詰めたプラグインを作成しましたが、まだ存在しています。divのサイズ変更を処理し、これはドキュメントの幅に基づいています。

問題は、報告されたドキュメントの幅が実際の幅から17px減少しているため、divのサイズが正しく設定されていないことです。

問題が発生する場所を見つけるためにアラートを入力しました:「ready」関数の前:1780px(正しい幅)「ready」関数の内部:1763pxプラグインの内部:1763px(すべての値は「document.width」と「$」から返されます(document).width() "と同じ結果)

これはChrome内でのみ発生し、プラグインが実質的にゼロに削減された場合でも引き続き発生します。

なぜこれが起こっているのかについて何か考えはありますか?

4

2 に答える 2

3

jQueryドキュメントから取得:

JavaScriptは、ページがレンダリングされたときにコードを実行するためのロードイベントを提供しますが、このイベントは、画像などのすべてのアセットが完全に受信されるまでトリガーされません。ほとんどの場合、DOM階層が完全に構築されるとすぐに、スクリプトを実行できます。.ready()に渡されたハンドラーは、DOMの準備ができた後に実行されることが保証されているため、通常、これは他のすべてのイベントハンドラーをアタッチし、他のjQueryコードを実行するのに最適な場所です。CSSスタイルプロパティの値に依存するスクリプトを使用する場合、スクリプトを参照する前に、外部スタイルシートを参照するか、スタイル要素を埋め込むことが重要です。

コードがロードされたアセットに依存している場合(たとえば、画像のサイズが必要な場合)、代わりにコードをロードイベントのハンドラーに配置する必要があります。

おそらく使用する必要があります

$(window).load(function() {});

トリガーイベントとして

于 2011-03-08T10:04:06.783 に答える
2

jQuery(window).width()がSafariとChromeで間違った値を返すことがわかりました。

于 2010-01-22T14:29:42.260 に答える