WebView (웹뷰) Widget Control
WebView(웹뷰) 위젯을 스크립트에서 제어할 때 사용하는 Widget Control(Property · Method · Event) 목록입니다. 위젯 소개와 사용법은 WebView 문서를 참고하세요.
아래 예시의 webviewID는 캔버스에서 WebView 위젯에 지정한 이름(ID)입니다. 스크립트에서는 위젯ID.멤버 형태로 접근합니다.
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)을 사용할 수 있습니다. 공통 레퍼런스 문서(작성 예정)를 참고하세요.