ObjectWebView
브라우저 창 객체
WebView는 브라우저에 내장된 윈도우 구성요소로, 현재는 Windows와 macOS(10.10+)만 지원하며, Windows에서는 IE/Edge 커널을, macOS에서는 WKWebView를 사용합니다.
WebView와 fibjs의 JavaScript 프로그램은 동일한 엔진에 있지 않기 때문에 호스트 프로그램과 통신해야 하는 경우 메시지를 통해 수행해야 합니다.
WebView에서 통신에 사용되는 객체는 외부이며, 외부는 postMessage 메소드 1개와 onmessage, onclose 2개의 이벤트를 지원합니다.
간단한 통신 예제 코드는 다음과 같습니다.
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
함수, 쿼리 및 바인딩은 webview에서 on("message", func);에 해당하는 postMessage 메시지 이벤트를 허용합니다.
1Function WebView.onmessage;
ondownload
함수, 쿼리 및 바인딩은 on("download", func)에 해당하는 webview의 다운로드 트랜잭션 상태 변경 이벤트를 허용합니다.
1Function WebView.ondownload;
멤버 함수
loadUrl
지정된 하중url그 페이지
1WebView.loadUrl(String url) async;
호출 매개변수:
- url: 문자열, 지정됨url
getUrl
현재 페이지 쿼리url
1String WebView.getUrl() async;
결과 반환:
- String, 현재 페이지를 반환합니다.url
setHtml
웹뷰의 페이지 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
웹뷰에 메시지 보내기
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, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
addListener
이벤트 핸들러를 객체에 바인딩
1
2Object WebView.addListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체에 바인딩
1Object WebView.addListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
prependListener
이벤트 핸들러를 객체의 원점에 바인딩
1
2Object WebView.prependListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체의 원점에 바인딩
1Object WebView.prependListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
once
일회성 이벤트 핸들러를 객체에 바인딩합니다. 일회성 핸들러는 한 번만 트리거됩니다.
1
2Object WebView.once(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
일회성 이벤트 핸들러를 객체에 바인딩합니다. 일회성 핸들러는 한 번만 트리거됩니다.
1Object WebView.once(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
prependOnceListener
이벤트 핸들러를 객체의 원점에 바인딩
1
2Object WebView.prependOnceListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체의 원점에 바인딩
1Object WebView.prependOnceListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- 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, 이벤트 매핑 관계를 지정하며, 객체 속성 이름을 이벤트 이름으로 사용하고, 해당 속성의 값을 이벤트 처리 함수로 사용합니다.
결과 반환:
- 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, 이벤트 매핑 관계를 지정하며, 객체 속성 이름을 이벤트 이름으로 사용하고, 해당 속성의 값을 이벤트 처리 함수로 사용합니다.
결과 반환:
- 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을 포함하는 값을 반환합니다.