WebView (웹뷰) Widget Control
WebViewウィジェットをスクリプトから制御するときに使用するWidget Control(Property · Method · Event)の一覧です。ウィジェットの紹介と使い方はWebViewドキュメントを参照してください。
以下の例のwebviewIDは、キャンバスでWebViewウィジェットに指定した名前(ID)です。スクリプトではwidgetID.memberの形式でアクセスします。
Widget Control一覧
| Widget Control | 種類 | シグネチャ | 説明 |
|---|---|---|---|
value | Property | webviewID.value | WebViewが読み込むコンテンツ(URL・アセットパス・HTMLデータ)。読み取り/書き込み、文字列 |
userAgent | Property | webviewID.userAgent | デフォルトのUser-Agentの後ろに追加するカスタムUser-Agent。読み取り/書き込み、文字列 |
embedInParentScroll | Property | webviewID.embedInParentScroll | トラックパッド/ホイールのスクロールを親のスクロールビューに渡すかどうか(macOS専用)。読み取り/書き込み、ブール値 |
setValue | Method | webviewID.setValue(s) | 読み込むコンテンツを設定。valueへの代入と同じ |
runJavaScript | Method | webviewID.runJavaScript(funcName, args, callback) | 読み込まれたページでJavaScriptを実行 |
asyncRunJavaScript | Method | webviewID.asyncRunJavaScript(funcName, args, callback) | JavaScriptを非同期で実行し、結果を待機 |
sendDataToWeb | Method | webviewID.sendDataToWeb(funcName, args, callback) | ページのJavaScript関数を名前で呼び出し、データを渡す |
onReceiveData | Method | webviewID.onReceiveData(callback) | ページがホストに送信したデータを受け取るコールバックを登録 |
addJavaScriptHandler | Method | webviewID.addJavaScriptHandler(handlerName, callback) | ページが名前で呼び出せるJavaScriptハンドラーを登録 |
isCreatedNewWindow | Method | webviewID.isCreatedNewWindow(result) | リンクを新しいウィンドウで開くことを許可するかを設定 |
injectGlow | Method | webviewID.injectGlow(json) | 読み込まれたページの上にアニメーショングロー効果を重ねる |
removeGlow | Method | webviewID.removeGlow() | injectGlowで追加したグロー効果を削除 |
onFinished | Event | webviewID.onFinished = (value) => { ... } | 現在のページの読み込みが完了したときに実行 |
onShouldOverrideUrl | Event | webviewID.onShouldOverrideUrl = (value) => { ... } | ページがhybrid://ブリッジでホストにメッセージを送信したときに実行 |
Property
value
WebViewが読み込むコンテンツです。ウィジェットのタイプ(URL・アセットパス・インラインHTML)に応じて解釈され、値を代入すると新しいコンテンツで再読み込みします。
- 種類: Property(読み取り/書き込み)
- 型: 文字列
- Returns(get): 現在読み込まれているコンテンツ文字列
Example
webviewID.value = "https://example.com";
let current = webviewID.value;
userAgent
デフォルトのUser-Agent文字列の後ろに追加するカスタムUser-Agentです。
- 種類: Property(読み取り/書き込み)
- 型: 文字列
- Returns(get): 追加されたカスタムUser-Agent文字列
Example
webviewID.userAgent = "MyApp/1.0";
embedInParentScroll
WebView上で発生したトラックパッド/マウスホイールのスクロールを親のスクロールビューに渡すかどうかです(macOS専用)。WebViewが生成された後にtrueを設定すると即座に反映され、他のプラットフォームでは無視されます。
- 種類: Property(読み取り/書き込み)
- 型: ブール値
- Returns(get): 親へのスクロール伝達の有無(ブール値)。デフォルト値は
false
Example
webviewID.embedInParentScroll = true;
Method
setValue
WebViewが読み込むコンテンツを設定します。valueプロパティへの代入と同じで、文字列はウィジェットのタイプ(URL・アセットパス・HTMLデータ)に応じて解釈されます。
- Parameters
s(文字列): 読み込むコンテンツ(URL・アセットパス・HTMLデータ)
- Returns: なし
Example
webviewID.setValue("https://example.com");
runJavaScript
読み込まれたページでJavaScriptを実行します。funcName(args)の形式で呼び出され(argsはJSONにエンコードされます)、argsが空または省略された場合はfuncNameをそのまま評価します(生の式を渡せます)。ページの読み込みが完了していない場合、呼び出しはキューに積まれ、ページの準備完了後に実行されます。
- Parameters
funcName(文字列): 実行するJavaScript関数の名前または式args: 関数に渡す引数(JSONエンコード)callback(任意): 結果{success, data, error}を受け取るコールバック
- Returns: なし(結果は
callbackに渡されます)
Example
webviewID.runJavaScript("window.someFunction", { value: 100 }, function() {});
asyncRunJavaScript
JavaScriptを非同期で実行し、結果を待機します。argsが指定された場合はfuncNameを戻り値を待つ関数本体として扱い、そうでない場合はfuncNameを式として評価します。ページの読み込みが完了していない場合、呼び出しはキューに積まれ、ページの準備完了後に実行されます。
- Parameters
funcName(文字列): JavaScript関数の本体または式args: 関数本体で使用する引数callback(任意): 結果{success, data, error}を受け取るコールバック
- Returns: なし(結果は
callbackに渡されます)
Example
webviewID.asyncRunJavaScript("myFunc(param);", { "param": data });
sendDataToWeb
読み込まれたページのJavaScript関数を呼び出し、argsを引数として渡します。funcName(args)の形式で呼び出され(argsはJSONエンコード)、空のマップまたは省略したマップを渡した場合はfuncNameをそのまま評価します。ページの読み込みが完了していない場合、呼び出しはキューに積まれ、ページの準備完了後に実行されます。
- Parameters
funcName(文字列): 呼び出すJavaScript関数の名前args: 関数に渡す引数(JSONエンコード)callback(任意): 結果{success, data, error}を受け取るコールバック
- Returns: なし(非同期で完了し、結果は
callbackに渡されます)
Example
webviewID.sendDataToWeb("window.someFunction", data, function() {});
onReceiveData
読み込まれたページがホストに送信したデータを受け取るコールバックを登録します。コールバックはメッセージのペイロードを引数として呼び出されます。
- Parameters
callback: ページが送信したデータを引数として受け取る関数
- Returns: なし
Example
webviewID.onReceiveData((data) => {
// data = ページが送信したペイロード
});
addJavaScriptHandler
読み込まれたページが名前で呼び出せる(ページのホストブリッジ経由)JavaScriptハンドラーを登録します。ページの読み込みが完了していない場合、登録はキューに積まれ、ページの準備完了後に適用されます。
- Parameters
handlerName(文字列): ページがこのハンドラーを呼び出すときに使用する名前callback: ページが渡した引数を受け取って呼び出される関数
- Returns: なし
Example
webviewID.addJavaScriptHandler("onQuote", (args) => {
// args = ページが送信したデータ
});
isCreatedNewWindow
WebViewがリンクを新しいウィンドウで開くことを許可するかを制御します。
- Parameters
result(ブール値): 新しいウィンドウの生成を許可する場合はtrue、ブロックする場合はfalse
- Returns: なし
Example
webviewID.isCreatedNewWindow(true);
injectGlow
読み込まれたページの上にアニメーショングロー効果を重ねます(Canvas 2Dオーバーレイとしてレンダリング)。効果のプリセットJSONを文字列で渡します。
- Parameters
json(文字列): グロー効果のプリセット(JSON文字列)
- Returns: なし
Example
webviewID.injectGlow(JSON.stringify({ color: "#FF4CAF50", intensity: 0.8 }));
removeGlow
injectGlowで追加したグロー効果を削除します。
- Parameters: なし
- Returns: なし
Example
webviewID.removeGlow();
Event
onFinished
現在のページの読み込みが完了したときに実行されます。
- 種類: Event
- ハンドラー引数:
value- 読み込みが完了したページのURL - Returns: なし
Example
webviewID.onFinished = (value) => {
// value = 読み込みが完了したURL
};
onShouldOverrideUrl
読み込まれたページがhybrid://URL(ページ→ホストのIPCブリッジ)でホストにメッセージを送信したときに実行されます。ホストがナビゲーションをインターセプトして直接処理できるようになります。
- 種類: Event
- ハンドラー引数:
value- ページが送信したデコード済みJSONペイロード(オブジェクト) - Returns: なし
Example
webviewID.onShouldOverrideUrl = (value) => {
if (value["FunctionName"] == "OnReceiveData") {
let data = value["Data"];
}
};
共通Widget Control(すべてのウィジェット)
すべてのウィジェットは、setProperty / getProperty / setStylePropertyのような名前ベースの共通Widget Control(Method)を使用できます。共通リファレンスドキュメント(作成予定)を参照してください。