(57)【特許請求の範囲】
【請求項１】
プロセッサとシステムメモリを有しネットワークに接続されたコンピュータシステムであって、ウェブページを当該コンピュータシステムでレンダリングするよう構成されたウェブブラウザを含むコンピュータシステムにおける、ウェブブラウザにスクリプトを動的にロードするための方法であって、前記ウェブブラウザは、当該ウェブブラウザにおいてクライアント側スクリプトをロードするために使用される既定スクリプトローディング動作を有し、前記クライアント側スクリプトは、前記ウェブブラウザにおいてレンダリングされるウェブページに含められるコンテンツを前記コンピュータシステムにおいて生成するためのものであり、当該方法は、
ウェブサーバからウェブページを受領する活動であって、前記ウェブページは、静的コンテンツ、クライアント側スクリプトローダスクリプトに対するリファレンスおよび複数の他のクライアント側スクリプトに対するリファレンスを含み、前記クライアント側スクリプトローダスクリプトは、実行されると、前記複数の他のクライアント側スクリプトに対するリファレンスを行列に入れるためのデータ構造を作成するよう構成されており、また前記クライアント側スクリプトローダスクリプトは、前記ウェブブラウザからの指示があると、前記複数の他のクライアント側スクリプトを、スクリプトローディング規則にしたがってロードするように構成されており、前記スクリプトローディング規則は、前記複数の他のクライアント側スクリプトを、前記複数の他のクライアント側スクリプトの確認された特性および前記複数の他のクライアント側スクリプト間の確認された関係に基づいてロードし、前記ウェブブラウザの既定スクリプトローディング動作を無効にするように構成されたローディング規則ロジックを含む、活動と、
前記プロセッサが、前記コンピュータシステムにおいて、前記クライアント側スクリプトローダスクリプトを実行して、前記複数の他のクライアント側スクリプトに対するリファレンスを格納するためのデータ構造を作成する活動と、
前記クライアント側スクリプトローダスクリプトが、前記ウェブページを処理して、前記複数の他のクライアント側スクリプトに対するリファレンスを列挙する活動と、
前記プロセッサが、前記列挙されたリファレンスを前記データ構造の中に格納する活動と、
前記列挙されたリファレンスを前記データ構造の中に格納することに続いて、前記ウェブページにそれ以上スクリプトリファレンスが含まれていないことを検知する活動と、
前記クライアント側スクリプトローダスクリプトが、前記列挙されたリファレンスを参照して、前記ローディング規則ロジックに基づいた、前記複数の他のクライアント側スクリプトのロードを並列に生じさせる、前記複数の他のクライアント側スクリプトについてのスクリプトロード順序を生成する活動であって、前記スクリプトロード順序は前記複数の他のクライアント側スクリプトに対するリファレンスが列挙される順序と異なる、活動と、
前記スクリプトロード順序にしたがって、前記複数の他のクライアント側スクリプトを並列にロードし、前記ウェブページに含められるクライアント側コンテンツを生成する活動と、
前記ウェブページをレンダリングする際に、前記静的コンテンツおよび前記生成したクライアント側コンテンツを使用する活動と
を備えたことを特徴とする方法。
【請求項２】
前記ウェブサーバから前記ウェブページを受領することに先立ってＨＴＴＰ  ＧＥＴを前記ウェブサーバに対して送付する活動
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項３】
非同期ＨＴＴＰ  ＰＯＳＴを前記ウェブサーバに対して送付する活動
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項４】
ウェブサーバから静的コンテンツ、クライアント側スクリプトローダスクリプトに対するリファレンスおよび複数の他のクライアント側スクリプトに対するリファレンスを含むウェブページを受領する前記活動は、
前記ウェブブラウザの前記既定スクリプトローディング動作に基づくと、前記複数の他のクライアント側スクリプトに対するリファレンスよりも先に前記クライアント側スクリプトローダスクリプトのリファレンスに遭遇するように、当該クライアント側スクリプトローダスクリプトに対するリファレンスが配置されたウェブページを受領する活動を含むこと特徴とする請求項１に記載の方法。
【請求項５】
前記クライアント側スクリプトローダスクリプトが前記列挙されたリファレンスを参照する前記活動は、同時に生じるドメイン越えのリクエストを制限するスクリプトロード順序を生成する活動を含むことを特徴とする請求項１に記載の方法。
【請求項６】
ネットワークに接続されたコンピュータシステムであって、ウェブページを当該コンピュータシステムでレンダリングするよう構成されたウェブブラウザを含むコンピュータシステムに、ウェブブラウザにスクリプトを動的にロードするための方法を実行させるプログラムを記録した記録媒体であって、前記ウェブブラウザは、当該ウェブブラウザにおいてクライアント側スクリプトをロードするために使用される既定スクリプトローディング動作を有し、前記クライアント側スクリプトは、前記ウェブブラウザにおいてレンダリングされるウェブページに含められるコンテンツを前記コンピュータシステムにおいて生成するためのものであり、前記プログラムは、前記コンピュータシステムに、
ウェブサーバから、静的コンテンツ、クライアント側スクリプトローダスクリプトに対するリファレンスおよび複数の他のクライアント側スクリプトに対するリファレンスを含むウェブページを受領すること、ここで、前記クライアント側スクリプトローダスクリプトは、実行されると、前記複数の他のクライアント側スクリプトに対するリファレンスを行列に入れるためのデータ構造を作成するよう構成されており、また前記クライアント側スクリプトローダスクリプトは、前記ウェブブラウザからの指示があると、前記複数の他のクライアント側スクリプトを、スクリプトローディング規則にしたがってロードするように構成されており、前記スクリプトローディング規則は、前記複数の他のクライアント側スクリプトを、前記複数の他のクライアント側スクリプトの確認された特性および前記複数の他のクライアント側スクリプト間の確認された関係に基づいてロードし、前記ウェブブラウザの既定スクリプトローディング動作を無効にするように構成されたローディング規則ロジックを含む、ことと、
前記コンピュータシステムにおいて、前記クライアント側スクリプトローダスクリプトを実行して、前記複数の他のクライアント側スクリプトに対するリファレンスを格納するためのデータ構造を作成することと、
前記ウェブページを処理して、前記複数の他のクライアント側スクリプトに対するリファレンスを列挙する活動と、
前記列挙したリファレンスを前記データ構造の中に格納することと、
前記列挙されたリファレンスを前記データ構造の中に格納することに続いて、前記ウェブページにそれ以上スクリプトリファレンスが含まれていないことを検知することと、
前記列挙されたリファレンスを参照して、前記ローディング規則ロジックに基づいて、前記複数の他のクライアント側スクリプトのロードを並列に生じさせる、前記複数の他のクライアント側スクリプトについてのスクリプトロード順序を生成することであって、前記スクリプトロード順序は前記複数の他のクライアント側スクリプトに対するリファレンスが列挙される順序と異なる、ことと、
前記スクリプトロード順序にしたがって、前記複数の他のクライアント側スクリプトを並列にロードし、前記ウェブページに含められるクライアント側コンテンツを生成する活動と、
前記ウェブページをレンダリングする際に、前記静的コンテンツおよび前記生成したクライアント側コンテンツを使用する活動と
を実行させることを特徴とする記録媒体。
【請求項７】
前記プログラムは、前記コンピュータシステムに、前記ウェブサーバから前記ウェブページを受領することに先立ってＨＴＴＰ  ＧＥＴを前記ウェブサーバに対して送付することを実行させることを特徴とする請求項６に記載の記録媒体。
【請求項８】
前記プログラムは、前記コンピュータシステムに、非同期ＨＴＴＰ  ＰＯＳＴを前記ウェブサーバに対して送付することを実行させることを特徴とする請求項６に記載の記録媒体。
【請求項９】
前記プログラムが前記コンピュータシステムに、ウェブサーバから前記静的コンテンツ、クライアント側スクリプトローダスクリプトに対するリファレンスおよび複数の他のクライアント側スクリプトに対するリファレンスを含むウェブページを受領することを実行させるは、
前記プログラムが、前記コンピュータシステムに、
前記ウェブブラウザの前記既定スクリプトローディング動作に基づくと、前記複数の他のクライアント側スクリプトに対するリファレンスよりも先に前記クライアント側スクリプトローダスクリプトのリファレンスに遭遇するように、当該クライアント側スクリプトローダスクリプトに対するリファレンスが配置されたウェブページを受領すること
を実行させることを特徴とする請求項６に記載の記録媒体。
【請求項１０】
前記コンピュータシステムに、前記列挙されたリファレンスを参照して、前記複数の他のクライアント側スクリプトについてのスクリプトロード順序を生成することを実行させることは、前記プログラムが、前記コンピュータシステムに、
同時に生じるドメイン越えのリクエストを制限するスクリプトロード順序を生成すること
を実行させることを特徴とする請求項６に記載の記録媒体。
【請求項１１】
システムメモリと、
１つまたは複数のプロセッサと、
ウェブブラウザおよびスクリプトプロセッサのプログラムを記録した１つまたは複数のコンピュータ読み取り可能な記録媒体であって、前記ウェブブラウザは、当該ウェブブラウザにおいてクライアント側スクリプトをロードするために使用される既定スクリプトローディング動作を有する、１つまたは複数のコンピュータ読み取り可能な記録媒体と
を備え、
前記ウェブブラウザは、
静的コンテンツ、クライアント側スクリプトローダスクリプトに対するリファレンスおよび複数の他のクライアント側スクリプトに対するリファレンスを含むウェブページをウェブサーバから受領し、ここで、前記クライアント側スクリプトローダスクリプトは、実行されると、前記複数の他のクライアント側スクリプトに対するリファレンスを行列に入れるためのデータ構造を作成するよう構成され、また前記クライアント側スクリプトローダスクリプトは、前記ウェブブラウザからの指示があると、前記複数の他のクライアント側スクリプトを、スクリプトローディング規則にしたがってロードするように構成され、前記スクリプトローディング規則は、前記複数の他のクライアント側スクリプトを、前記複数の他のクライアント側スクリプトの確認された特性および前記複数の他のクライアント側スクリプト間の確認された関係に基づいてロードし、前記ウェブブラウザの既定スクリプトローディング動作を無効にするように構成されたローディング規則ロジックを含み、
前記クライアント側スクリプトローダスクリプトに遭遇し、
前記クライアント側スクリプトローダスクリプトを前記スクリプトプロセッサに渡し、
前記複数の他のクライアント側スクリプトにより生成したクライアント側コンテンツを受領し、
前記ウェブページをレンダリングする際に、前記静的コンテンツおよび前記生成したクライアント側コンテンツを使用する
ように構成されており、
前記スクリプトプロセッサは、
前記クライアント側スクリプトローダスクリプトをロードし、当該クライアント側スクリプトローダスクリプトをロードにより、前記コンピュータシステムに、
前記複数の他のクライアント側スクリプトに対するリファレンスを格納するためのデータ構造を作成すること、
前記ウェブページを処理して、前記複数の他のクライアント側スクリプトに対するリファレンスを列挙すること、
前記列挙されたリファレンスを前記データ構造の中に格納すること、
前記列挙されたリファレンスを前記データ構造の中に格納することに続いて、前記ウェブページにそれ以上スクリプトリファレンスが含まれていないことを検知すること、および
前記列挙されたリファレンスを参照して、前記ローディング規則ロジックに基づいた、前記複数の他のクライアント側スクリプトのロードを並列に生じさせる、前記複数の他のクライアント側スクリプトについてのスクリプトロード順序を生成すること、ここで、前記スクリプトロード順序は前記複数の他のクライアント側スクリプトに対するリファレンスが列挙される順序と異なる、
を生じさせ、
前記スクリプトロード順序にしたがって、前記複数の他のクライアント側スクリプトを並列にロードし、前記ウェブページに含められるクライアント側コンテンツを生成し、
前記生成したクライアント側コンテンツを、前記ウェブページ中にレンダリングするために前記ウェブブラウザに渡す
ように構成されている
ことを特徴とするコンピュータシステム。
【請求項１２】
前記ウェブブラウザは、前記ウェブサーバから前記ウェブページを受領することに先立ってＨＴＴＰ  ＧＥＴを前記ウェブサーバに対して送付するように構成されていることを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１３】
前記ウェブブラウザは、非同期ＨＴＴＰ  ＰＯＳＴを前記ウェブサーバに対して送付するように構成されていることを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１４】
前記ウェブブラウザが、ウェブサーバから静的コンテンツ、クライアント側スクリプトローダスクリプトに対するリファレンスおよび複数の他のクライアント側スクリプトに対するリファレンスを含むウェブページを受領するように構成されていることは、
前記ウェブブラウザが、当該ウェブブラウザの前記既定スクリプトローディング動作に基づくと、前記複数の他のクライアント側スクリプトに対するリファレンスよりも先に前記クライアント側スクリプトローダスクリプトのリファレンスに遭遇するように、当該クライアント側スクリプトローダスクリプトに対するリファレンスが配置されたウェブページを受領するように構成されていること
を含むことを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１５】
前記クライアント側スクリプトローダスクリプトをロードし、当該クライアント側スクリプトローダスクリプトをロードにより、前記コンピュータシステムに、前記列挙されたリファレンスを参照してスクリプトロード順序を生成することを生じさせることは、
前記クライアント側スクリプトローダスクリプトをロードし、当該クライアント側スクリプトローダスクリプトをロードにより、前記コンピュータシステムに、前記列挙されたリファレンスを参照し、同時に生じるドメイン越えのリクエストを制限するスクリプトロード順序を生成することを生じさせることを含む
ことを特徴とする請求項１１に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スクリプトを動的にロードすることに関する。
【背景技術】
【０００２】
１．発明の背景および関連技術
コンピュータシステムおよび関連技術は、社会の多くの面に影響を及ぼす。確かに、コンピュータシステムの情報処理能力は、我々の生活と仕事の方法を変えてしまった。コンピュータシステムは、コンピュータシステムが出現する前には手動で行っていた仕事（例えば、文書処理、日程計画、経理処理、など）を今や、当たり前のように実行する。さらに最近では、コンピュータシステムを互いに、あるいは他の電子装置と結合して有線無線双方のネットワークを形成させ、その上でコンピュータシステムと他の電子装置とは電子データを転送することができる。その結果、多くの計算作業の実行は、多数の異なるコンピュータシステムおよび／または多数の異なる計算要素に渡って分散される。
【０００３】
ネットワークベースの通信（network based communication）の一般形態の一つは、ワールドワイドウェブ（ＷＷＷ）上で電子メッセージを交換することである。ワールドワイドウェブのコンテンツには、一般的にクライアント／サーバモデルによりアクセスする。クライアントのコンピュータシステムの「ウェブブラウザ」はリクエストを送って、サーバコンピュータシステムの「ウェブサーバ」が提供するコンテンツにアクセスする（例えば、そのウェブブラウザに対するユニフォームリソースロケータ（「ＵＲＬ」）により）。ウェブブラウザのユーザがそのコンテンツにアクセスすることを許可されているとき、そのウェブサーバは通常そのコンテンツをそのウェブブラウザに提供する。ウェブ環境において、コンテンツおよびそのコンテンツに対するリクエストは、しばしばハイパーテキスト転送プロトコル（「ＨＴＴＰ」）を用いて送られる。ウェブベースのコンテンツ（Web-based content）は、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）ページ、スタイルシート、画像、スクリプト、など、により提供することができる。
【０００４】
例えば、スクリプトは、ＨＴＭＬ命令のみを用いて許容されるものと異なって、更に複雑な操作を実行する際に使用できる。一般的に、スクリプトは、ウェブサーバにおいて実行してコンテンツをページに追加することができるか、またはウェブページにコンテンツを追加することをウェブブラウザで実行するためそのウェブブラウザに対し送付することのできる、実行可能コードである。スクリプトは、例えば、ＪａｖａＳｒｉｐｔ、ＶＢＳｃｒｉｐｔ、ＡＳＰ、ＰＨＰ、Ｐｅｒｌ、またはＡＳＰ．Ｎｅｔのようなスクリプト作成（プログラム作成）言語で開発することができる。ウェブサーバは、サーバ側およびクライアント側双方のスクリプトを含むことのできるページを保持することができる。サーバ側スクリプトを使用して、ウェブページに包含するためウェブサーバがアクセスすることのできるデータを取得することができる。クライアント側スクリプトは、例えば、現地時間と現地日付のような、クライアントマシン独特のデータを取得し提示するため有用である。しかしながら、例えば、そのウェブサーバまたは他のウェブサーバからデータまたは追加スクリプトをリクエストするような、もっと複雑なクライアント側スクリプトも可能である。
【０００５】
ウェブサーバが、サーバ側スクリプトを含む、ウェブページに関するウェブブラウザリクエストを受領すると、そのウェブサーバは、そのサーバ側スクリプトを適切なスクリプトエンジンへと受け流す。そのスクリプトエンジンは、そのスクリプトを処理して、サーバ側スクリプト機能を表す対応のＨＴＭＬ命令を返送する。その対応ＨＴＭＬ命令は次いで、ウェブブラウザに対し返送するためのウェブページに（クライアント側スクリプトのいずれかと共に）投入（inject）される。
【０００６】
例えば、サーバ側スクリプトが、クエリを行ってデータベースの１０列（10 database rows）を返送する構成となっているとき、このスクリプトエンジンは、そのデータベースの１０列をＨＴＭＬフォーマットでウェブサーバに対し返送する。するとウェブサーバはこのときそのデータベースの１０列をあらわすＨＴＭＬを、ウェブページの中のいずれかの他のＨＴＭＬ命令およびクライアント側スクリプトに投入する。サーバ側スクリプト全部を処理した後、そのサーバ側スクリプトの処理から生じたＨＴＭＬ、他のＨＴＭＬ、およびもしあればクライアント側スクリプトをウェブブラウザに対して返送する。
【０００７】
クライアント側スクリプトは、ウェブページに埋め込むか、または別個のファイルに含むことができる。クライアント側スクリプトが外部ファイルに含まれているとき、ウェブページはそのスクリプトをリファレンスするスクリプトリファレンスを含むことができる（例えば、<script type=“text/javascript” src=“hello.js”></script>）。クライアント側スクリプトおよびスクリプトリファレンスは、ウェブブラウザに送付するウェブページの中にインラインで含めることができる。こうして、そのウェブブラウザは、そのウェブページを処理するにつれ、埋め込みクライアント側スクリプトと同時にそのクライアント側スクリプトに対するスクリプトリファレンスにも遭遇することができる。
【０００８】
埋め込みスクリプトに遭遇すると、そのウェブブラウザは、外部の適切なスクリプトエンジンに照会してそのスクリプトを処理することができる。クライアント側スクリプトリファレンスに遭遇すると、そのウェブブラウザは、そのリファレンスされたスクリプトを処理するためスクリプトエンジンに対してロードすることができるか（例えば、そのスクリプトのコピーが既にキャッシュされていれば）、またはそのウェブサーバに対してそのスクリプトをリクエストすることができる。そのウェブサーバはこのとき、そのスクリプトをウェブブラウザに返送することができるので、そのウェブブラウザは処理のため、そのスクリプトをそのスクリプトエンジンに対しロード（および可能性としてはキャッシュも）することができる。
【０００９】
ウェブブラウザは一般的に、ウェブにおいて後に遭遇するスクリプトはいずれも、ウェブページにおいて以前に遭遇したスクリプトに依存すると推定する。したがって、ウェブブラウザは典型的に、スクリプトをウェブページの中で遭遇する順序にしたがって逐次ロードする。しかしながら、多くのウェブページにおいて、続いて遭遇するスクリプトは以前に遭遇したスクリプトのいずれにも依存しない。したがって、残念ながら、また特に多数のクライアント側スクリプトを有するウェブページに関しては、逐次にロードすることは比較的効率が悪い。
【００１０】
加えて、ウェブページを開発するとき、開発者は以前に開発したクライアント側スクリプトを含めてクライアント側機能を利用することを選ぶかもしれない。開発者はある程度、以前にはクライアント側スクリプトは意図通りに機能したと推定する。代わりに、開発者には、以前に開発したクライアント側スクリプトのいずれをも慎重に吟味する時間、意欲または専門技能が欠けているかもしれない。それにもかかわらず、ウェブページを展開するとき、多少のクライアント側スクリプトはロードまたは作動をし損ねるかもしれない。残念ながら、典型的なウェブブラウザ（およびその中のスクリプトエンジン）は、たとえあっても、例えば、クライアント側スクリプト欠陥の事情を大元のウェブページ開発者に示す有用なコンテキストを殆ど提供しない。このような事情で、ウェブページ開発者は、クライアント側スクリプト欠陥に関連する情報の不完全な記録に基づいてウェブページをデバッグすることを要求されることがある。
【発明の概要】
【００１１】
本発明は、スクリプトを動的にロードするための方法、システム、およびコンピュータプログラム製品に及ぶ。ウェブブラウザは、ウェブブラウザからのウェブページに対するリクエストに応答するウェブサーバからウェブページを受領する。前記ウェブページは、スクリプトローダに対するリファレンスを含む。前記スクリプトローダは、実行に際して、他のスクリプトリファレンスを待ち行列に入れるためのデータ構造を作成するよう構成されている。また、前記スクリプトローダは、そのウェブブラウザからの通知があると、スクリプトローディング規則にしたがって、リファレンスされたスクリプトをそのウェブページに動的にロードし、そのウェブブラウザのデフォルトのスクリプトローディング動作を無効にする構成になっている。
【００１２】
前記ウェブブラウザは前記スクリプトローダを実行する。前記スクリプトローダは、スクリプトリファレンスを待ち行列に入れるためのデータ構造を作成する。前記ウェブブラウザは、前記ウェブページを処理して、前記ウェブページに含まれるスクリプトリファレンスをいずれもデータ構造の中の待ち行列に入れる。前記スクリプトローダは、前記ウェブページに含まれるスクリプトリファレンスで前記行列をポピュレートする。前記ウェブブラウザは、前記ウェブページに含まれるスクリプトリファレンスをいずれもデータ構造の中の待ち行列に入れることに続いて、前記ウェブページはそれ以上のスクリプトリファレンスを含んでいないことを検知する。
【００１３】
前記ウェブブラウザは、前記ウェブページがそれ以上のスクリプトリファレンスを含んでいないことを前記スクリプトローダに対して通知する。前記スクリプトローダは、前記ウェブブラウザから指定の前記ウェブページがそれ以上のスクリプトリファレンスを含んでいないことの通知を受領する。スクリプトローダは、待ち行列内のスクリプトリファレンスによりリファレンスされるスクリプトをスクリプトローディング規則にしたがってロードさせ、前記ウェブブラウザの既定スクリプトローディング動作を無効にする。前記ウェブブラウザは、生じた関係スクリプト結果をいずれも前記ウェブページのレンダリングの中に含める。
【００１４】
本要約は、詳細な説明において下記に更に詳細に記述する概念の要点を簡略形で紹介するために提供されている。本要約は、請求する主題の重要特徴または不可欠特徴を特定することを目的とはせず、請求主題の範囲決定における補助として使用されることをも目的とはしない。
【００１５】
本発明のさらなる特徴および利点は、以下の記述において示すが、一部は記述から明らかであるか、または本発明の実践により習得されるであろう。本発明の特徴および利点は、付属の特許請求の範囲において詳細に指摘する機器および結合を用いて体得し取得されるであろう。本発明のこれらおよび他の特徴は、以下の記述および付属の特許請求の範囲からいっそう完全に明らかになるか、または本発明の以下に説明する通りの実践により習得されるであろう。
【００１６】
本発明の上に列挙したものその他の利点および特徴を取得することのできる方法で記述するために、上に簡単に記述した本発明のいっそう詳細な記述を付属図面に示すそれらの具体的実施例を参照して表示する。これらの図面は、本発明の典型的結合のみを描写しておりしたがって、その範囲を限定するものではないと了解して、付属図面の使用を通じ、本発明をさらなる特異性および詳細と共に記述し説明する。
【図面の簡単な説明】
【００１７】
【図１】スクリプトを動的にロードすることを容易にする例示的なコンピュータアーキテクチャを示す図である。
【図２】スクリプトを動的にロードするための例示的な方法の流れを示す図である。
【発明を実施するための形態】
【００１８】
本発明は、スクリプトを動的にロードするための方法、システム、およびコンピュータプログラム製品に及ぶ。ウェブブラウザは、ウェブブラウザからのウェブページに関するリクエストに応答するウェブサーバからウェブページを受領する。前記ウェブページは、スクリプトローダに対するリファレンスを含む。前記スクリプトローダは、実行に際して、他のスクリプトリファレンスを待ち行列に入れるためのデータ構造を作成するよう構成されている。前記スクリプトローダは、そのウェブブラウザからの通知があると、スクリプトローディング規則にしたがってリファレンスされたスクリプトをそのウェブページに動的にロードして、そのウェブブラウザの既定スクリプトローディング動作を無効にする構成にもなっている。
【００１９】
前記ウェブブラウザは前記スクリプトローダを実行する。前記スクリプトローダは、スクリプトリファレンスを待ち行列に入れるためのデータ構造を作成する。前記ウェブブラウザは、前記ウェブページを処理して、前記ウェブページに含まれるスクリプトリファレンスをいずれもデータ構造の中の行列に入れる。前記スクリプトローダは、前記ウェブページに含まれるスクリプトリファレンスを前記待ち行列にポピュレートする。前記ウェブブラウザは、前記ウェブページに含まれるスクリプトリファレンスのいずれもをデータ構造の中の待ち行列に入れることに続いて、前記ウェブページがそれ以上のスクリプトリファレンスを含んでいないことを検知する。
【００２０】
前記ウェブブラウザは、前記ウェブページがそれ以上のスクリプトリファレンスを含んでいないことを前記スクリプトローダに対して通知する。前記スクリプトローダは、前記ウェブブラウザから指定の前記ウェブページがそれ以上のスクリプトリファレンスを含んでいないことの通知を受領する。スクリプトローダは、行列内のスクリプトリファレンスによりリファレンスされるスクリプトをスクリプトローディング規則にしたがってロードさせ、前記ウェブブラウザの既定スクリプトローディング動作を無効にする。前記ウェブブラウザは、生じたあらゆる関係スクリプト結果を前記ウェブページのレンダリングの中に含める。
【００２１】
本発明の実施例は、以下に詳細を説明するように、コンピュータハードウエアを含む専用または汎用コンピュータを備える。本発明の範囲内の実施例は、その上にコンピュータ実行可能命令またはデータ構造を搬送するまたは有するためのコンピュータ読取可能媒体をも含む。当該コンピュータ読取可能媒体は、専用または汎用コンピュータがアクセスし得る利用可能なあらゆる媒体であることができる。限定ではなく例証として、コンピュータ読取可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光学的ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置のような物理的（即ち記憶可能型）コンピュータ読取可能記憶媒体、もしくは所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形で記憶するため使用することが出来て、汎用または専用コンピュータがアクセスし得るあらゆる他の媒体を包含することができる。
【００２２】
本記述および次の請求項において、「ネットワーク」は、コンピュータシステムおよび／またはモジュールの間で電子的データの運搬を可能にする一つ以上のデータリンクであると定義する。情報がネットワークまたは他の通信接続（有線、無線または有線または無線の結合）の上でコンピュータに対し転送または供与されるとき、コンピュータはその接続を厳密にコンピュータ読取可能媒体として認識する。したがって、限定ではなく例証として、コンピュータ読取可能媒体は、所望のプログラムをコンピュータ実行可能命令またはデータ構造の形で乗せるまたは記憶するため使用することが出来て、汎用または専用コンピュータがアクセスすることのできるネットワークまたはデータ構造をも備えることができる。
【００２３】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に、一定の機能または機能のグループを実行させる命令およびデータを備える。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語のような中間フォーマット命令、またはさらにソースコードである。主題は、構造的特徴および／または方法論的活動に特有の言語で記述したが、付属の特許請求の範囲に定義する主題は、必ずしも記述する特徴または上述の活動に限定されるものではないことは理解されるべきである。むしろ、記述する特徴または活動は特許請求の範囲の実施の形態例として開示する。
【００２４】
当業者は、本発明が、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップ型コンピュータ、メッセージ処理装置、携帯端末、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品すなわちプログラム可能家庭用電化製品、ネットワークＰＣ、マイクロコンピュータ、メインフレームコンピュータ、携帯電話、携帯情報端末、ポケットベル、および類似のものを含む多数の型のコンピュータシステム構成を有するネットワーク計算環境において実践されることを理解するであろう。本発明は、ローカルおよびリモートのコンピュータシステムがネットワークを通じて（有線データリンク、無線データリンク、または有線および無線データリンクの結合のいずれかにより）連結され、両者がタスクを実行する分散システム環境においても実行される。分散システム環境において、プログラムモジュールは、ローカルおよびリモート双方のメモリ記憶装置に配置される。
【００２５】
図１は、スクリプトを動的にロードすることを容易にする模範コンピュータアーキテクチャ１００を示す。描写するように、コンピュータアーキテクチャ１００は、ウェブブラウザ１０１、ウェブサーバ１０２、およびネットワーク１０３を含む。ウェブブラウザ１０１およびウェブサーバ１０２は、例えば、ローカルエリアネットワーク（「ＬＡＮ」）、広域ネットワーク（「ＷＡＮ」）およびさらにインターネットのような、ネットワーク１０３に接続することができる。このようにして、ウェブブラウザ１０１およびウェブサーバ１０２は、ネットワーク１０３に接続された他の構成要素に対しデータを送受信することができる。したがって、これらの構成要素は、メッセージ関連データを作成し、メッセージ関連データ（例えば、インターネットプロトコル（「ＩＰ」）ダイアグラム、および他の、送信制御プロトコル（「ＴＣＰ」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）、単純メール転送プロトコル（「ＳＭＴＰ」）などのような、ＩＰデータグラムを使用する上層プロトコル）を、ネットワーク上で交換することができる。例えば、構成要素は、ウェブサービス関連データを含むＨＴＴＰリクエストおよびレスポンス並びにシンプルオブジェクトアクセスプロトコル（「ＳＯＡＰ」）を交換することができる。
【００２６】
一般的に、ウェブブラウザ１０１は、ウェブベースのコンテンツを、例えば、ネットワーク１０３を通じてウェブサーバ１０４にアクセス可能なウェブサーバのような、ウェブサーバに対し（例えば、指定のＵＲＬ宛のＨＴＴＰメッセージを経由して）リクエストして表現する構成となっている。ウェブベースのコンテンツは、テキストデータ、画像データ、オーディオ／ビデオデータ、実行可能コード（例えば、スクリプト）を含むことができる。
【００２７】
一般的に、ウェブサーバ１０２は、ウェブベースのコンテンツ（例えば、特定のＵＲＬに対するＨＴＴＰメッセージ）に関するリクエストを受け取って、リクエストされたウェブベースコンテンツを要求元ウェブブラウザに対して返送する構成となっている。ウェブサーバ１０２がリクエストを受け付けると、（例えば、前記リクエストを、リクエストに含まれるＵＲＬに基づいて適切なプロセスに送出して）リクエストに対応するサーバ側ページを確認することができる。ウェブサーバ１０６は、次いでその確認されたサーバ側ページをロードすることができる。
【００２８】
前記サーバ側ページがサーバ側スクリプトリファレンス含むとき、ウェブサーバ１０２は、リファレンスされたサーバ側スクリプト（例えば、ＡＳＰ．ＮＥＴ命令）を、処理するため、サーバ側スクリプト処理部に送付することができる。前記スクリプト処理部は、前記サーバ側スクリプトを処理して対応する結果をいずれも前記ウェブサーバ１０２に対して返送する。ウェブサーバ１０２はこのとき、ウェブページの中に、他のコンテンツおよび何らかのクライアント側スクリプトに添えて、（出力書式を整えた後かも知れない）前記結果を含むことができる。ウェブサーバ１０２は次いで、前記ウェブページを要求元ウェブブラウザに対して返送する。
【００２９】
したがって、例えば、ウェブブラウザ１０１はリクエスト１１１（ＨＴＴＰ  ＧＥＴ）を、ウェブサーバ１０２対し（ウェブサーバ１０２のために適切なＵＲＬを利用することにより）送付することになる。ウェブサーバ１０２は、リクエスト１１１を処理して、（サーバ側スクリプトを通じて静的または動的にアクセスされる）対応するコンテンツを作成／取得することができる。対応するコンテンツおよびクライアント側スクリプトリファレンスはいずれも（例えば、ＨＴＴＰメッセージに収容して）ウェブページ１１２の中でウェブブラウザ１０１に対し返送することができる。クライアント側スクリプトリファレンスは、例えば、大容量記憶装置のディレクトリ構造またはアセンブリ（例えば、ダイナミックリンクライブラリ（「ＤＬＬ」））などのような、ウェブサーバ１０２の各種の異なる場所（例えば、スクリプト１２２の中）に記憶されたスクリプトをリファレンスすることができるか、もしくは他のウェブサーバにあるスクリプトをリファレンスすることができる。ウェブサーバ１０２は次いで、リクエスト１１１に応答してウェブブラウザ１０１に対しウェブページ１１２を返送することができる。
【００３０】
ウェブブラウザ１０１がウェブページを受領すると、ウェブページの各種の部分を、そのウェブページの前記部分を処理する構成のモジュールに割り当てることができる。したがって、ウェブブラウザ１０１がウェブページを受領するとき、例えば、静止コンテンツ１１３のような、静止コンテンツは、レンダリングモジュール１０６に割り当てることができる。任意のスクリプト（例えば、Ｊａｖａスクリプト、ＶＢスクリプトなど）および例えば、スクリプトリファレンス１０８Ｒのようなスクリプトリファレンスは、例えば、スクリプト処理部１０７のような、適切なスクリプト処理部に割り当てることができる。ウェブブラウザ１０１において以前に実行したスクリプトは、例えば、キャッシュ１５８の中のような、大量記憶装置１０９に記憶してもよい。このようにして、クライアント側スクリプトリファレンスの受領に応答して、ウェブブラウザ１０１は、対応するクライアント側スクリプトを、（クライアント側スクリプトを送付したウェブサーバであることもないこともある）ウェブサーバからネットワーク１０３経由で、またはキャッシュ１５８から、取得することができる。
【００３１】
スクリプト処理部１０７は、スクリプトを実行して、（もしあれば）生じたコンテンツのいずれをも、レンダリングモジュール１０６に対して返送することができる。例えば、スクリプト処理部１０７は、結果１５４をレンダリングモジュール１０６に対して返送することができる。レンダリングモジュール１０６は、ユーザインターフェイス１０４にデータを表現することができる。例えば、レンダリングモジュール１０６は、ページデータ１５６をユーザインターフェイス１０４に表現することができる。レンダリングモジュール１０６は、コンテンツを受領した通りに表現することができるので、ウェブページの一部分（例えば、静止コンテンツ）はウェブページの他の部分（例えば、スクリプト結果）の前に表現する。
【００３２】
図２は、スクリプトを動的にロードするための例示的な方法２００の流れ図を示す。方法２００を、コンピュータアーキテクチャ１００の中の構成要素およびデータに関して記述する。
【００３３】
方法２００は、ウェブページをウェブサーバから受領する活動（活動２０１）を含む。このウェブページはウェブページに関するウェブブラウザからのリクエストに応答してウェブブラウザに送付される。前記ウェブページは、実行に際して、他のスクリプトローダリファレンスを待ち行列に入れるためのデータ構造を作成するよう構成された、スクリプトローダに対するリファレンスを含む。また、前記スクリプトローダはウェブブラウザからの通知があると、ウェブページの中でリファレンスされたスクリプトをスクリプトローディング規則したがって動的にロードして、ウェブブラウザの既定スクリプトローディング動作を無効にする構成になっている。
【００３４】
例えば、ウェブブラウザ１０１は、リクエスト１１１に応答してウェブページ１１２を受領することができる。ウェブページ１１２は、スクリプトローダスクリプト１０８Ｓを参照するスクリプトローダリファレンス１０８Ｒを含む。スクリプトローダスクリプト１０８Ｓは、実行に際して、ウェブページ１１２の中の、例えば、１２４Ｒ、１３４Ｒ、および１４４Ｒのような、他のスクリプトリファレンスを待ち行列に入れるためのデータ構造を作成するよう構成されている。また、スクリプトローダスクリプト１０８Ｓは、ウェブブラウザ１０１からの通知があるとウェブページ１１２の中でレファレンスされたスクリプトを、スクリプトローディング規則１１８にしたがって動的にロードする構成になっている。スクリプトローディング規則１１８はウェブブラウザ１０１の既定スクリプトローディング動作を無効にすることができる。
【００３５】
スクリプトローディング規則１１８は、スクリプトをウェブブラウザ１０１にロードするためのロジックおよびポリシーを含むことができる。したがって、スクリプトローダ１０８は、スクリプトローディング規則１１８を行列１１６の中のクライアント側スクリプトリファレンスに適用して、スクリプトロード順１５３を作成することができる。スクリプトローディング規則ロジックは、行列１１６に含まれるクライアント側スクリプトリファレンスを列挙するためのアルゴリズムを含むことができる。例えば、スクリプトローディング規則１１８はリファレンス１２４Ｒ、１３４Ｒ、１４４Ｒなどを列挙することができる。
【００３６】
列挙されたクライアント側スクリプトリファレンスから、その他のスクリプトローディング規則ロジックは、対応するレファレンスされたスクリプトの相互のおよび／または他の外部リソースに対する依存度を確認するロジックアルゴリズム含むことができる。例えば、スクリプトローディング規則を実行することのできるスクリプトローダ１０８は、スクリプト１３４Ｓはスクリプト１２４Ｓに依存すること、およびスクリプト１４４Ｓは他のいかなるスクリプトにも依存しないことを判定することができる。列挙されたクライアント側スクリプトリファレンスから、他のスクリプトローディング規則ロジックは、ドメイン越えリクエストを含むスクリプトを確認するロジックアルゴリズム含むことができる。例えば、スクリプトローダ１０８は、スクリプトローディング規則を実行して、リファレンスされたスクリプトを実行するとき、ウェブサーバ１０２以外のサーバにどれだけのリクエストを生じるかを判定することができる。
【００３７】
他のスクリプトローディング規則ロジックは、リファレンスされたスクリプトの特性および／またはそれらの間の関係を確認するためのアルゴリズムを含むことができる。スクリプトローディング規則ロジックは、開発者が、ウェブページにおいてリファレンスされたスクリプトの特性および／またはそれらの間の関係を確認する自分自身のスクリプトローディング規則ロジックを開発できるように、拡張することができる。代わりに、開発者は既存のスクリプトローディング規則ロジックを、指定目的のための特別仕様スクリプトローディング規則ロジックに変更することができる。
【００３８】
スクリプトローディング規則ポリシーは、列挙された前記リファレンスされたスクリプトを、列挙されたスクリプトの特性および／またはそれらの間の関係に基づいてロードする方法を指示する。スクリプトローディング規則ポリシーが、列挙されたスクリプトリファレンスに適用されて指定の順序で行列１１６の中から相当するスクリプトをロードすることができる。スクリプトをロードする順序は、確認されたスクリプト依存関係と同時に他のスクリプト関係および特性に基づいて指示することができる。
【００３９】
実施例によっては、スクリプトローディング規則ポリシーを適用して、列挙されたレファレンスされたスクリプトを、リファレンスされたスクリプトがウェブページに現れる順序とは異なる指定の順序でロードする（変則ローディング）。例えば、スクリプトリファレンス１２４Ｒ、１３４Ｒ、および１４４Ｒはウェブページ１１２の中にこの順序で含まれているかも知れない。即ち、リファレンス１２４Ｒはウェブページ１１２の上端に近く、リファレンス１４４Ｒはウェブページ１１２の下端に近い。しかしながら、スクリプトローディング規則ポリシーは、たとえリファレンス１２４Ｒをリファレンス１３４Ｒより先に受領していても、スクリプト１３４Ｓをスクリプト１２４Ｓとスクリプト１４４Ｓの前にロードすることを指示することができる。さらに、スクリプトローディング規則ポリシーは、たとえリファレンス１２４Ｒをリファレンス１４４Ｒより先に受領していても、スクリプト１４４Ｓをスクリプト１２４Ｓの前にロードすることを指示することができる。
【００４０】
別の実施例においては、スクリプトローディング規則ポリシーを適用して、列挙されたリファレンスされたスクリプトを平行してロードする（平行ローディング）。例えば、スクリプトローディング規則ポリシーは、スクリプト１２４Ｓはスクリプト１４４Ｓに依存せずスクリプト１４４Ｓはスクリプト１２４Ｓに依存しないので、スクリプト１２４Ｓと１２４Ｓとは平行してロードすることを指示することができる。
【００４１】
別の実施例においては、スクリプトローディング規則ポリシーを適用して、指定ドメインに対するドメイン越えリクエストの数を制限する方法で、列挙されたスクリプトをロードする。例えば、スクリプトローディング規則ポリシーは、ウェブサーバ１０２以外のウェブサーバに対する同時リクエストの数を、指定のしきい値に制限する順序でロードすることを指示することができる。
【００４２】
スクリプトローディング規則ポリシーは、開発者が、スクリプトを指定の方法でロードする自分自身のスクリプトローディング規則ポリシーを開発することができるように拡張することもできる。代わりに、開発者は、既存のスクリプトローディング規則ポリシーを、指定の目的のため特別仕様スクリプトローディング規則ポリシーに変更することができる。例えば、スクリプトを順次にロードするのではなく、スクリプトローディング規則ポリシーは、スクリプトを依存関係の所与の既知セットに関し並行的にロードすることを指示することができる。
【００４３】
スクリプトローダ１０８は、当該スクリプトがブラウザ環境の中に適切にロードされるスクリプトロード順を定式化するとき、個別のブラウザの特性を考慮に入れることもできる。例えば、スクリプトローダ１０８は、スクリプトロード順を計画するとき、ブラウザのタイプ１５１を考慮に入れる（そしてブラウザタイプ１５１に関するスクリプトローディング特性を認識する）ことができる。
【００４４】
実施例によっては、スクリプトローディング規則１１８をスクリプトローダ１０８の中にハードコードする。したがって、これらの実施例においてスクリプトローディング規則１１８を特別仕様とするには、開発者はスクリプトローダ１０８のためのソースコードを変更してスクリプトローディング規則１１８を指定目的のために特別仕様にする（および、かくしてスクリプトローダ１０８も特別仕様にする）。別の実施例において、スクリプトローダ１０８は、外部からスクリプトローディング規則１１８にアクセスする。こうして開発者は、これら別の実施例においてスクリプトローディング規則１１８を特別仕様にするには、外部からアクセス可能なスクリプトローディング規則１１８を変更して、スクリプトローディング規則１１８を指定目的のための特別仕様にする。
【００４５】
スクリプトローダ１０８は、ブラウザ１０１およびスクリプト処理部１０７とインターフェイスするため、ＡＰＩを用意することができる。
【００４６】
方法２００は、スクリプトローダを実行してスクリプトリファレンスを行列に入れるためのデータ構造を作成する活動を含む（活動２０２）。例えば、スクリプト処理部１０７は、スクリプトローダ１０８をロードして行列１１６を作成することができる。スクリプトローダリファレンス１０８Ｒは、ウェブページ１１２の上端近くに（または上端に）インラインに含ませることができる。したがって、スクリプトローダリファレンス１０８Ｒは、遭遇する最初のリファレンスである可能性が高い。ウェブブラウザ１０１の既定動作（例えば、スクリプトを順次にロードする）のため、スクリプト処理部１０７は、スクリプトローダリファレンス１０８Ｒを、他のスクリプトまたはスクリプトリファレンスのいずれよりも先に処理することができる。したがって、スクリプトリファレンス１０８Ｓを処理してスクリプトローダ１０８をロードすることは、本質的に、スクリプトローディング動作をブートストラップして、ウェブブラウザ１０１の既定スクリプトローディング動作を無効にする。
【００４７】
方法２００は、スクリプトリファレンスを記憶するよう構成された待ち行列を作成する活動を含む（活動２０３）。例えば、スクリプトローダ１０８は、行列１１６を作成して、ウェブページ１１２の中のクライアント側スクリプトを記憶することができる。方法２００は、ウェブページを処理して、そのウェブページが含むスクリプトリファレンスのいずれもをデータ構造の中の待ち行列に入れる活動（活動２０４）および指定ウェブページに含まれるスクリプトリファレンスを待ち行列にポピュレートする活動（活動２０５）を含む。例えば、ウェブブラウザ１０１およびスクリプトローダ１０８は、一緒に使用でき、ウェブページ１１２を処理し行列リファレンス１２４Ｒ、１３４Ｒ、および１４４Ｒを行列１１６の中に記憶することができる。
【００４８】
方法２００は、ウェブページに含まれるスクリプトリファレンスのいずれをもデータ構造内の待ち行列に入れることに続いて、そのウェブページはそれ以上のスクリプトリファレンスを含んでいないことを検出する活動を含む（活動２０６）。例えば、ウェブブラウザ１０１は、リファレンス１２４Ｒ、１３４Ｒ、および１４４Ｒを行列１１６の中に入れるのに続いて、ウェブページ１１２はそれ以上のスクリプトリファレンスを含んでいないことを検出することができる。
【００４９】
方法２００は、ウェブページがそれ以上のスクリプトリファレンスを含んでいないことをスクリプトローダに対して示す活動を含む（活動２０７）。それ以上のスクリプトリファレンスを含んでいないと示すことは、スクリプトローダに、待ち行列に並ぶスクリプトリファレンスに対応するスクリプトをスクリプトローディング規則にしたがって動的にロードさせ、ウェブブラウザの既定スクリプトローダローディング動作を無効にする。例えば、ウェブブラウザ１０１は、リファレンス全部がウェブページ１１２から行列１１６の中に入れられたとき、待ち行列処理指示１５２をスクリプトローダ１０８に送ることができる。待ち行列処理指示１５２は、スクリプトローダ１０８に、行列１１６の中のスクリプトを、スクリプトローディング規則１１８にしたがって動的にロードさせることができる。
【００５０】
方法２００は、ウェブブラウザから、指定のウェブページがこれ以上のスクリプトリファレンスは含まないとの指示を受領する活動を含む（活動２０８）。例えば、スクリプトローダ１０８は、ウェブブラウザ１０１から待ち行列処理指示１５２を受領することができる。方法２００は、行列の中のスクリプトリファレンスによりリファレンスされるスクリプトを、ウェブブラウザの既定ススクリプトローディング規則にしたがって動的にロードさせクリプトローダローディング動作を無効にする活動を含む（活動２０９）。例えば、スクリプトローダ１０８は、スクリプト１２４Ｓ、１３４Ｓ、および１４４Ｓと同時に、ウェブページ１１２の中のリファレンスされたスクリプトを、スクリプトローディング規則にしたがって動的にロードさせウェブブラウザ１０１の既定スクリプトローダローディング動作を無効にすることができる。
【００５１】
スクリプトロード順１５３は、ウェブページ１１２の中でリファレンスされるスクリプトをロードするための順序を集合的にあらわす。実施例によっては、スクリプト処理部とスクリプトローダ１０８とは連絡して、スクリプトの実際のローディングを調整する。例えば、スクリプトローダ１０８は、スクリプト処理部１０７に対し一つ以上のスクリプトをロードする命令を送付することができる。一つ以上のスクリプトをロードすると、スクリプト処理部１０７は、一つ以上のスクリプトがロードされたことをスクリプトローダ１０８に示すことができる。このときスクリプトローダ１０８は、別の一つ以上のスクリプトをスクリプトローダ１０８にロードする別の命令を送付することができる。別の一つ以上のスクリプトをロードすると、スクリプト処理部１０７は、別の一つ以上のスクリプトがロードされたことをスクリプトローダ１０８に示すことができる。ウェブページ１１２の中のスクリプトリファレンスをロードし終えるまで同様の仕組みを生じさせることができる。
【００５２】
したがって、スクリプトローダ１０８およびスクリプト処理部１０７を一緒に使用して、ウェブページ１１２で遭遇するのとは異なる順序でスクリプトをロードすること、複数のスクリプトを同時にロードすること、同時ドメイン越えリクエストを制限する方法でスクリプトをロードすること、などができる。スクリプトローダ１０８は、（ブラウザタイプ１５１に基づき）ウェブブラウザ１０１のスクリプトロード特性を侵害しない方法でスクリプトをロードさせることもできる。
【００５３】
ロードされたスクリプトの中には、ウェブページ１１２の中に収容するためのコンテンツを作成することができるものがある。結果１５４は、ウェブブラウザ１０１において実行されたクライアント側スクリプトから返送されたコンテンツをいずれも集合的に表す。スクリプト処理部１０７は、結果１５４をレンダリングモジュール１０６に送付することができる。方法２００は、ウェブページの表現に関係スクリプト結果のいずれをも含む活動を含む（活動２１０）。例えば、レンダリングモジュール１０６は、結果１５４をページデータ１５６（ウェブページ１１２を表すデータ）に含むことができる。レンダリングモジュール１０６は、ページデータ１５６をユーザインターフェイス１０４に表現することができる。
【００５４】
したがって、本発明の実施例は、クライアント側スクリプトローディングに関連づけられたｉｎｉｔおよびｌｏａｄイベントに先立つ時点でスクリプトをロードすることを容易にする。スクリプトローダリファレンスは、多数の異なる場合においてもこの動作を容易にするためにウェブブラウザに返送される。
【００５５】
一実施例において、スクリプトローダリファレンスは、ウェブアプリケーションに対する最初のリクエストがＨＴＴＰ  ＧＥＴであるとき、ウェブブラウザに返送される。スクリプトローダリファレンスは、例えば、下記のように、返送されたウェブページの上端にインラインで含まれる。
【００５６】
【数１】
0004682270.tif 000002
【００５７】
スクリプトローダは、例えば、下記のように、ウェブアプリケーションのため作成されて登録される。
【００５８】
【数２】
0004682270.tif 000003
【００５９】
リファレンス、インラインスクリプト、ハンドラを含むスクリプトリファレンスは、スクリプトローダの中の待ち行列に入れる。前述のように、スクリプトは各種各様の異なる位置からロードすることができる。したがって、スクリプトは、例えば、下記のように、カスタムライブラリからロードすることができる。
【００６０】
【数３】
0004682270.tif 000004
【００６１】
登録されたスクリプトロードは、次いで、例えば下記のように、既に行列に入れられたスクリプトリファレンスをロードする指示を受けることができる。
【００６２】
【数４】
0004682270.tif 000005
【００６３】
スクリプトローダは、ウェブアプリケーションに対して、スクリプト全部がロードされた時期を示すことができる。
【００６４】
別の実施例において、スクリプトローダリファレンスは、ウェブアプリケーションに対して非同期のＨＴＴＰ  ＰＯＳＴでウェブブラウザに返送される。この別の実施例においては、スクリプトロードは既に作成されており、リクエストマネージャは、ロードされたスクリプト上のイベントにフックされ独自処理されているかもしれない。したがって、例えば、下記のように登録を生じることができる。
【００６５】
【数５】
0004682270.tif 000006
【００６６】
スクリプトリファレンスはこのとき内部スクリプトローダを用いて行列に入れることができる。これはスクリプトリファレンス、インラインスクリプト、およびあらゆるハンドラを含む。したがって、スクリプトは、例えば、下記のようにカスタムライブラリからロードすることができる。
【００６７】
【数６】
0004682270.tif 000007
【００６８】
登録されたスクリプトロードは、例えば下記のように、そのリファレンスをロードする指示を受ける。
【００６９】
【数７】
0004682270.tif 000008
【００７０】
いずれの実施例においても前述の他の実施例と同様に、ページまたはコンポーネントの開発者は、ＡＰＩおよびスクリプトローダの宣言的シンタクスを通じてウェブブラウザにスクリプトをロードする行動を定義することができる。スクリプトマネージャはそのとき、クライアント側スクリプト処理部を使用する出力を作成する。
【００７１】
さらなるスクリプト関連機能も、スクリプトローダに含むことができる。例えば、スクリプトローダは、スクリプトのロードにエラーがあればいずれもログファイルに書き込むように構成することができる。スクリプトのロードのエラーは、時間切れ、依存性のエラー、リソースのエラーなどを含むことができる。スクリプトのロードのエラーについての関係コンテキスト情報も、スクリプトのロードのエラーが生じたとき、ログファイルに書き込むことができる。ログファイルはページまたはコンポーネント開発者がアクセスすることのできる場所に記憶することができる。例えば、ウェブサーバ１０１においてスクリプトのロードのエラーを検出すると、スクリプトローダ１０８は、ログ１５７をネットワーク１０３の中のネットワーク位置に記憶することができる。開発者はそのネットワーク位置からログ１５７にアクセスして、スクリプトローダ１０８を他のスクリプトと同様にテストおよび／またはデバッグを補助することができる。
【００７２】
本発明は、要旨および本質的特性から逸脱することなく、別の固有形態で具体化されることがある。記述した実施例は、あらゆる観点で例証となるのみであって限定的なものではないと見なさなければならない。したがって、本発明の範囲は、前記の記述によってではなく、付属特許請求の範囲によって示される。特許請求の範囲と同等の意味および範囲に入る変更はすべて、本発明の範囲内に包含される。
【図１】
0004682270.tif 000009
【図２】
0004682270.tif 000010