オブジェクトWebView
ブラウザウィンドウオブジェクト
WebView はブラウザに組み込まれたウィンドウ コンポーネントです。現在、Windows と macOS (10.10 以降) のみをサポートしています。Windows では IE/Edge カーネルを使用し、macOS では WKWebView を使用します。
WebView の JavaScript プログラムと fibjs は同じエンジン内にないため、ホスト プログラムと通信する必要がある場合は、メッセージを通じて行う必要があります。
WebView による通信に使用されるオブジェクトは外部であり、外部では 1 つのメソッド postMessage と 2 つのイベント onmessage と onclose がサポートされます。
簡単な通信サンプルコードは次のとおりです。
1
2
3
4
5
6
7
8
9// index.js
var gui = require('gui');
var webview = gui.open('fs://index.html');
webview.onmessage = msg => console.log(msg);
webview.onload = evt => webview.postMessage("hello from fibjs");
webview.wait();
Index.html の内容は以下のとおりです。
1
2
3
4
5
6
7
8<script>
external.onclose = function() {
}
external.onmessage = function(msg){
external.postMessage("send back: " + msg);
};
</script>
ユーザー ウィンドウが閉じる前に、external.onclose イベントがトリガーされ、external.onclose によってウィンドウを閉じるかどうかを決定できます。external.onclose が false を返す場合、操作はキャンセルされます。それ以外の場合、ウィンドウは閉じられます。
次の例では、ユーザーが「閉じる」をクリックしてからウィンドウを閉じる前に 5 秒待機します。
1
2
3
4
5
6
7
8
9
10
11
12<script lang="JavaScript">
var bClose = false;
external.onclose = function () {
if (!bClose) {
setTimeout(function () {
bClose = true;
window.close();
}, 5000);
return false;
}
}
</script>
上記のコードでは、window.close 自体も onclose イベントをトリガーするため、このイベントを処理する必要があるかどうかを識別するためにスイッチ変数を追加する必要があります。
相続関係
静的プロパティ
defaultMaxListeners
整数、デフォルトのグローバル最大リスナー数
1static Integer WebView.defaultMaxListeners;
メンバーのプロパティ
onopen
関数、クエリ、およびバインディングの読み込み成功イベント。on("open", func); と同等です。
1Function WebView.onopen;
onload
関数、クエリ、およびバインドの読み込み成功イベント。on("load", func); と同等。
1Function WebView.onload;
onaddress
関数、クエリ、およびバインド ページ アドレス変更イベント。on("address", func); と同等。
1Function WebView.onaddress;
ontitle
ページ タイトル変更イベントのクエリおよびバインドを行う関数。on("title", func); と同等です。
1Function WebView.ontitle;
onmove
on("move", func) と同等の関数、クエリおよびバインド ウィンドウ移動イベント。
1Function WebView.onmove;
次の例では、ウィンドウの移動に応じてウィンドウの左上隅の座標を出力します。
1
2
3
4var gui = require('gui');
var webview = gui.open('fs://index.html');
webview.onmove = evt => console.log(evt.left, evt.top);
onresize
関数。ウィンドウ サイズ変更イベントをクエリしてバインドします。on("size", func); と同等です。
1Function WebView.onresize;
次の例では、ウィンドウのサイズを変更したときの寸法を出力します。
1
2
3
4var gui = require('gui');
var webview = gui.open('fs://index.html');
webview.onresize = evt => console.log(evt.width, evt.height);
onclosed
ウィンドウを閉じるイベントを関数、クエリ、バインドします。この時間は WebView が閉じられた後にトリガーされます。これは on("closed", func); と同等です。
1Function WebView.onclosed;
onmessage
関数、クエリ、バインディングは、on("message", func) と同等の、Webview の postMessage メッセージ イベントを受け入れます。
1Function WebView.onmessage;
ondownload
関数、クエリ、バインディングは、WebView でのダウンロード トランザクション ステータス変更イベントを受け入れます。on("download", func); と同等です。
1Function WebView.ondownload;
メンバー関数
loadUrl
指定された負荷urlページ
1WebView.loadUrl(String url) async;
呼び出しパラメータ:
- url: 文字列、指定url
getUrl
現在のページをクエリするurl
1String WebView.getUrl() async;
返される結果:
- String、現在のページを返しますurl
setHtml
WebViewのページHTMLを設定する
1WebView.setHtml(String html) async;
呼び出しパラメータ:
- html: 文字列、HTMLを設定
reload
現在のページを更新する
1WebView.reload() async;
goBack
前のページに戻ります
1WebView.goBack() async;
goForward
次のページへ
1WebView.goForward() async;
現在のウィンドウのドキュメントを印刷します
1WebView.print(Integer mode = 1) async;
呼び出しパラメータ:
- mode: 整数、印刷パラメータ、0: 高速印刷、1: 標準印刷、2: 印刷プレビュー。デフォルトは1です
executeJavaScript
現在のウィンドウで JavaScript コードを実行します。
1WebView.executeJavaScript(String code) async;
呼び出しパラメータ:
- code: 文字列、実行する JavaScript コードを指定します。
close
現在のウィンドウを閉じる
1WebView.close() async;
postMessage
WebView にメッセージを送信する
1WebView.postMessage(String msg) async;
呼び出しパラメータ:
msg: 文字列、送信するメッセージ
postMessage はウィンドウがロードされた後にメッセージを送信する必要があり、以前に送信されたメッセージは失われます。したがって、onload イベントがトリガーされた後にこのメソッドを呼び出すことをお勧めします。
on
イベントハンドラーをオブジェクトにバインドする
1
2Object WebView.on(String ev,
Function func);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
- func: 関数、イベント処理関数を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
イベントハンドラーをオブジェクトにバインドする
1Object WebView.on(Object map);
呼び出しパラメータ:
- map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
addListener
イベントハンドラーをオブジェクトにバインドする
1
2Object WebView.addListener(String ev,
Function func);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
- func: 関数、イベント処理関数を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
イベントハンドラーをオブジェクトにバインドする
1Object WebView.addListener(Object map);
呼び出しパラメータ:
- map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
prependListener
イベントハンドラーをオブジェクトのオリジンにバインドする
1
2Object WebView.prependListener(String ev,
Function func);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
- func: 関数、イベント処理関数を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
イベントハンドラーをオブジェクトのオリジンにバインドする
1Object WebView.prependListener(Object map);
呼び出しパラメータ:
- map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
once
ワンタイム イベント ハンドラーをオブジェクトにバインドします。ワンタイム ハンドラーは 1 回だけトリガーされます。
1
2Object WebView.once(String ev,
Function func);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
- func: 関数、イベント処理関数を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
ワンタイム イベント ハンドラーをオブジェクトにバインドします。ワンタイム ハンドラーは 1 回だけトリガーされます。
1Object WebView.once(Object map);
呼び出しパラメータ:
- map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
prependOnceListener
イベントハンドラーをオブジェクトのオリジンにバインドする
1
2Object WebView.prependOnceListener(String ev,
Function func);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
- func: 関数、イベント処理関数を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
イベントハンドラーをオブジェクトのオリジンにバインドする
1Object WebView.prependOnceListener(Object map);
呼び出しパラメータ:
- map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
off
オブジェクト処理キューから関数の割り当てを解除する
1
2Object WebView.off(String ev,
Function func);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
- func: 関数、イベント処理関数を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
オブジェクト処理キュー内のすべての関数をキャンセルします
1Object WebView.off(String ev);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
オブジェクト処理キューから関数の割り当てを解除する
1Object WebView.off(Object map);
呼び出しパラメータ:
- map: オブジェクト。イベントのマッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
removeListener
オブジェクト処理キューから関数の割り当てを解除する
1
2Object WebView.removeListener(String ev,
Function func);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
- func: 関数、イベント処理関数を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
オブジェクト処理キュー内のすべての関数をキャンセルします
1Object WebView.removeListener(String ev);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
オブジェクト処理キューから関数の割り当てを解除する
1Object WebView.removeListener(Object map);
呼び出しパラメータ:
- map: オブジェクト。イベントのマッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
removeAllListeners
オブジェクトの処理キューからすべてのイベントのすべてのリスナーをキャンセルします。イベントが指定されている場合は、指定されたイベントのすべてのリスナーが削除されます。
1Object WebView.removeAllListeners(String ev);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
オブジェクトの処理キューからすべてのイベントのすべてのリスナーをキャンセルします。イベントが指定されている場合は、指定されたイベントのすべてのリスナーが削除されます。
1Object WebView.removeAllListeners(Array evs = []);
呼び出しパラメータ:
- evs: 配列、イベントの名前を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
setMaxListeners
リスナー数のデフォルト制限 (互換性のみを目的)
1WebView.setMaxListeners(Integer n);
呼び出しパラメータ:
- n: 整数、イベントの数を指定します
getMaxListeners
互換性のみを目的として、デフォルトのリスナー制限数を取得します。
1Integer WebView.getMaxListeners();
返される結果:
- Integer、デフォルトの制限数量を返します
listeners
オブジェクトの指定されたイベントについてリスナー配列をクエリします。
1Array WebView.listeners(String ev);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
返される結果:
- Array、指定されたイベントのリスナー配列を返します。
listenerCount
オブジェクトの指定されたイベントのリスナーの数をクエリします。
1Integer WebView.listenerCount(String ev);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
返される結果:
- Integer、指定されたイベントのリスナーの数を返します。
オブジェクトの指定されたイベントのリスナーの数をクエリします。
1
2Integer WebView.listenerCount(Value o,
String ev);
呼び出しパラメータ:
- o: 値。クエリのオブジェクトを指定します。
- ev: 文字列、イベントの名前を指定します
返される結果:
- Integer、指定されたイベントのリスナーの数を返します。
eventNames
クエリリスナーイベント名
1Array WebView.eventNames();
返される結果:
- Array、イベント名の配列を返します。
emit
イベントをアクティブにトリガーする
1
2Boolean WebView.emit(String ev,
...args);
呼び出しパラメータ:
- ev: 文字列、イベント名
- args: ...、イベントパラメータはイベント処理関数に渡されます
返される結果:
- Boolean、イベント トリガーのステータスを返し、応答イベントがある場合は true を返し、それ以外の場合は false を返します。
toString
オブジェクトの文字列表現を返します。通常、「[Native Object]」が返されます。オブジェクトは、独自の特性に従って再実装できます。
1String WebView.toString();
返される結果:
- String、オブジェクトの文字列表現を返します。
toJSON
オブジェクトの JSON 形式表現を返します。通常は、オブジェクトによって定義された読み取り可能なプロパティのコレクションを返します。
1Value WebView.toJSON(String key = "");
呼び出しパラメータ:
- key: 文字列、使用されません
返される結果:
- Value、シリアル化可能な JSON を含む値を返します