2

ドキュメントによると、

JavaScript は、ページのレンダリング時にコードを実行するためのロード イベントを提供しますが、このイベントは、画像などのすべてのアセットが完全に受信されるまでトリガーされません。

$(handler)明らかな理由もなく、期待どおりに動作しないコードを使用しています。コンソールで実行するコードは次のとおりです。

>>> document.readyState
"complete"
>>> $(function () { console.log("A") })
[    #document    ]
>>> jQuery(function () { console.log("B") })
[    #document    ]

この時点で、他のどこhandlerかに書かれている no は呼び出されないことを付け加えておきます。$().ready

ただし、次の後続の呼び出しが行われる場合は注意してください。

>>> jQuery.ready()
A
B

同時に、他の場所にある他のハンドラーも呼び出されます。

Ready ハンドラが期待どおりに動作するようになりました。すなわち

>>> $(function () { console.log("D"); }
D

この場合、なぜjQueryが機能しないのか、誰かが同様のことに遭遇した場合、および干渉している可能性のあるものを見つける方法に興味があります.

私が使用している Chrome 開発者ツールでは、読み込まれていないリソースはないようです。

なんにせよ、コードは RequireJS を使用して jQuery を含むスクリプトを非同期的にロードしていますが、すべてのハンドラーは jQuery がロードされた後に明確に定義されています (つまり、 adefine(['jquery'], ...)またはrequire(['jquery'], ...)同等の.

編集

この問題は Google Chrome で発生しますが、Firefox では発生しないことに注意してください。おそらく誤って、この問題は Firefox でも発生していると思っていました。

洞察に感謝します。

4

1 に答える 1

1

どんなに価値があっても、これに遭遇する次の人々のために、含まれuservoiceているコードはネイティブのjQuery呼び出しを破壊しているように見えるので、jQuery.ready()呼び出されることはありません.

于 2013-02-14T03:29:56.350 に答える