ブラウザ要素とは、ドキュメントのビューが表示されるフレームのことです。メインウィンドウ上では、chrome://browser/content/browser.xulがそれに該当します。
browser要素を使用することで、Webページをフレーム内に表示できます。
<browser type="content" src="http://example.com/" flex="1" />
メインウィンドウのbrowser要素への参照は、
などで取得できます。そうすることで、この要素を通してブラウザのオブジェクトにアクセスできるようになります。
読み込まれたドキュメントを監視するプログレス リスナを、ブラウザに追加します。
addProgressListener( listener )addProgressListener - XUL | MDN
引数のlistenerは、次項のnsIWebProgressListenerインターフェイスを実装したオブジェクトでなければなりません。このメソッドの用法は、ロケーションの変更検出で解説しています。
nsIWebProgressListenerインターフェイスを実装するには、次の5つのメソッドが必要です。
void onLocationChange(
in nsIWebProgress aWebProgress, // 通知を発生したnsIWebProgress
in nsIRequest aRequest, // 関連するnsIRequest
in nsIURI aLocation,
[optional] in unsigned long aFlags
);
onLocationChange() - nsIWebProgressListener - XPCOM Interface Reference | MDN
void onProgressChange(
in nsIWebProgress aWebProgress, // 通知を発生したnsIWebProgress
in nsIRequest aRequest, // 新しい進捗のnsIRequest
in long aCurSelfProgress,
in long aMaxSelfProgress,
in long aCurTotalProgress,
in long aMaxTotalProgress
);
onProgressChange() - nsIWebProgressListener - Mozilla | MDN
void onSecurityChange(
in nsIWebProgress aWebProgress, // 通知を発生したnsIWebProgress
in nsIRequest aRequest, // 新しいセキュリティ状態のnsIRequest
in unsigned long aState // セキュリティ状態フラグとセキュリティ強度フラグの和
);
onSecurityChange() - nsIWebProgressListener - Mozilla | MDN
void onStateChange(
in nsIWebProgress aWebProgress, // 通知を発生したnsIWebProgress
in nsIRequest aRequest, // 状態を変更したnsIRequest
in unsigned long aStateFlags, // 新しい状態を表す、状態遷移フラグと状態種類フラグの和
in nsresult aStatus // 状態変化に伴うエラーのステータスコード
);
onStateChange() - nsIWebProgressListener - Mozilla | MDN
onStateChange: function( aWebProgress, aRequest, aStateFlags, aStatus )
{
if( ( aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_IS_WINDOW )
&& ( aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP ) )
{
// ドキュメントの読み込みが完了した
}
}
void onStatusChange(
in nsIWebProgress aWebProgress, // 通知を発生したnsIWebProgress
in nsIRequest aRequest, // 新しい状態のnsIRequest
in nsresult aStatus, // リクエストの現在の状態を表す値
in wstring aMessage // aStatusに相当する、ローカライズされたテキスト
);
onStatusChange() - nsIWebProgressListener - Mozilla | MDN
| 定数 | 説明 |
|---|---|
| STATE_START | |
| STATE_REDIRECTING | |
| STATE_TRANSFERRING | |
| STATE_NEGOTIATING | |
| STATE_STOP | リクエストが完了したことを示す |
| 定数 | 説明 |
|---|---|
| STATE_IS_REQUEST | |
| STATE_IS_DOCUMENT | |
| STATE_IS_NETWORK | |
| STATE_IS_WINDOW |
| 定数 | 説明 |
|---|---|
| STATE_RESTORING |
| 定数 | 説明 |
|---|---|
| STATE_IS_INSECURE | |
| STATE_IS_BROKEN | |
| STATE_IS_SECURE |
| 定数 | 説明 |
|---|---|
| STATE_SECURE_HIGH | |
| STATE_SECURE_MED | |
| STATE_SECURE_LOW |
| 定数 | 説明 |
|---|---|
| STATE_IDENTITY_EV_TOPLEVEL |
| 定数 | 説明 |
|---|---|
| LOCATION_CHANGE_SAME_DOCUMENT | |
| LOCATION_CHANGE_ERROR_PAGE |
ブラウザからnsIWebProgressListenerを取り除きます。
removeProgressListener( listener )removeProgressListener - Mozilla | MDN
ドキュメントにURLの内容を読み込みます。
loadURI(
aURI,
aReferrerURI,
aCharset
)
loadURI - XUL | MDN
gBrowser.loadURI( 'http://example.com', null, 'UTF-8' )
ちなみにChrome以外では、Windows.locationを書き換えることで新しいURLを読み込みます。
ページの読み込みを検出するには、
などの方法があります。このうちプログレス リスナとDOMContentLoadedを利用する方法については、ロケーションの変更検出で解説しています。