2011-06-28 5 views
0

私が取り組んでいるサイトのヘッダーには、外部のjavascriptがたくさんあります(jQuery、プラグイン、サイトの機能など)が呼び出されます。私はasync="async"タグを付けてChromeとFirefoxのパフォーマンスを向上させることに決めました。ヘッダ内の非同期スクリプトが、他の外部スクリプトや関数をbody throwで "undefined"としています。

これを実行した後、サイトのさまざまな部分で呼び出される一部の機能に、エラーコンソールで「定義されていません」というフラグが付けられています。私はIEとOpera(非同期属性をサポートしていないブラウザ)でサイトをテストしましたが、うまく動作します。その後、すべてのスクリプトからasync属性を削除し、ChromeとFirefoxで正常に機能しました。

async属性を使用すると、他のスクリプトが呼び出される前に一部のスクリプトの読み込みが終了し、読み込みが終了したスクリプトが、依存関係(jQueryやプラグインなど)のあるスクリプトになります私は見ている "未定義の"エラーをスローするローディング。

私の理解が間違っている場合は、私を修正してください。私が考えていることが実際に起こっているのであれば、スクリプトタグすべてに非同期属性を保持しながら、これを回避することができますか?

答えて

0

荷物を特定の順序でロードしたい場合asyncはその順序を取り除き、最も負荷の高い順番でロードします。は不要です

+0

これは意味がありますが、どのような種類のスクリプトでもasync属性がどのように有効であるとわかりますか?多くのスクリプトがイベントや特定のオブジェクトに「準備ができている」ことに依存しているようですが、非同期属性がそれらの状況で多くのものを壊してしまうようです。 – Aaron

+0

@Aaronはわかりません。私はいつも自分のコードを、それを置いた順にロードする必要があるので、私はそれらを個人的に使用しません。私は間違いなく、ライブラリが常に**最初に読み込まれるようにしたいと思います。残りのjsコードのために必要となるかもしれないので – Neal

+0

です。たぶん私はこの属性からあまり期待していなかったでしょう。私は本当にライブラリとプラグインをバットからロードするのは良い考えだと思います。私はそれを行い、それほど重要ではない重要なスクリプトを非同期的に読み込みます。ご協力いただきありがとうございます! – Aaron

関連する問題