Skip to main content

BrowserView

History
Version(s)Changes
None
API DEPRECATED

참고 BrowserView 클래스는 더 이상 사용되지 않으며, 새로운 WebContentsView 클래스로 대체되었다.

BrowserView는 추가 웹 콘텐츠를 BrowserWindow에 임베드하는 데 사용할 수 있다. 이는 자식 윈도우와 유사하지만, 소유한 윈도우에 상대적으로 위치한다. webview 태그의 대안으로 설계되었다.

Class: BrowserView

History
Version(s)Changes
None
API DEPRECATED

뷰를 생성하고 제어한다.

참고 BrowserView 클래스는 더 이상 사용되지 않으며, 새로운 WebContentsView 클래스로 대체되었다.

프로세스: Main

이 모듈은 app 모듈의 ready 이벤트가 발생하기 전에는 사용할 수 없다.

예제

// 메인 프로세스에서
const { app, BrowserView, BrowserWindow } = require('electron')

app.whenReady().then(() => {
const win = new BrowserWindow({ width: 800, height: 600 })

const view = new BrowserView()
win.setBrowserView(view)
view.setBounds({ x: 0, y: 0, width: 300, height: 300 })
view.webContents.loadURL('https://electronjs.org')
})

new BrowserView([options]) 실험적 더 이상 사용되지 않음

History
Version(s)Changes
None
API DEPRECATED
  • options Object (선택 사항)
    • webPreferences WebPreferences (선택 사항) - 웹 페이지 기능의 설정.
      • devTools boolean (선택 사항) - DevTools를 활성화할지 여부. false로 설정하면 BrowserWindow.webContents.openDevTools()를 사용해 DevTools를 열 수 없다. 기본값은 true이다.
      • nodeIntegration boolean (선택 사항) - Node.js 통합을 활성화할지 여부. 기본값은 false이다.
      • nodeIntegrationInWorker boolean (선택 사항) - 웹 워커에서 Node.js 통합을 활성화할지 여부. 기본값은 false이다. 자세한 내용은 멀티스레딩에서 확인할 수 있다.
      • nodeIntegrationInSubFrames boolean (선택 사항) - iframe 및 자식 윈도우와 같은 하위 프레임에서 Node.js 지원을 활성화하는 실험적 옵션. 모든 프리로드 스크립트가 각 iframe에 로드되며, process.isMainFrame을 사용해 메인 프레임인지 확인할 수 있다.
      • preload string (선택 사항) - 페이지에서 다른 스크립트가 실행되기 전에 로드될 스크립트를 지정한다. 이 스크립트는 Node.js 통합이 켜져 있든 꺼져 있든 상관없이 항상 Node.js API에 접근할 수 있다. 값은 스크립트의 절대 파일 경로여야 한다. Node.js 통합이 꺼져 있을 때, 프리로드 스크립트는 Node.js 전역 심볼을 다시 전역 범위로 재도입할 수 있다. 예제는 여기에서 확인할 수 있다.
      • sandbox boolean (선택 사항) - 설정하면, 해당 윈도우와 연결된 렌더러를 샌드박스로 만들어 Chromium OS 수준의 샌드박스와 호환되게 하고 Node.js 엔진을 비활성화한다. 이 옵션은 nodeIntegration 옵션과 다르며, 프리로드 스크립트에 사용 가능한 API가 더 제한적이다. 자세한 내용은 여기에서 확인할 수 있다.
      • session Session (선택 사항) - 페이지에서 사용할 세션을 설정한다. Session 객체를 직접 전달하는 대신 partition 옵션을 사용할 수도 있다. partition은 파티션 문자열을 받는다. sessionpartition이 모두 제공되면 session이 우선한다. 기본값은 기본 세션이다.
      • partition string (선택 사항) - 페이지에서 사용할 세션을 파티션 문자열에 따라 설정한다. partitionpersist:로 시작하면, 앱 내의 모든 페이지에서 동일한 partition을 가진 지속적인 세션을 사용한다. persist: 접두사가 없으면, 메모리 내 세션을 사용한다. 동일한 partition을 할당하면 여러 페이지가 동일한 세션을 공유할 수 있다. 기본값은 기본 세션이다.
      • zoomFactor number (선택 사항) - 페이지의 기본 확대/축소 비율. 3.0300%를 의미한다. 기본값은 1.0이다.
      • javascript boolean (선택 사항) - JavaScript 지원을 활성화할지 여부. 기본값은 true이다.
      • webSecurity boolean (선택 사항) - false로 설정하면 동일 출처 정책을 비활성화하고, 사용자가 이 옵션을 설정하지 않았다면 allowRunningInsecureContenttrue로 설정한다. 기본값은 true이다.
      • allowRunningInsecureContent boolean (선택 사항) - HTTPS 페이지가 HTTP URL에서 JavaScript, CSS 또는 플러그인을 실행할 수 있도록 허용한다. 기본값은 false이다.
      • images boolean (선택 사항) - 이미지 지원을 활성화할지 여부. 기본값은 true이다.
      • imageAnimationPolicy string (선택 사항) - 이미지 애니메이션 실행 방식을 지정한다. animate, animateOnce, noAnimation 중 하나를 선택할 수 있다. 기본값은 animate이다.
      • textAreasAreResizable boolean (선택 사항) - TextArea 엘리먼트를 크기 조정 가능하게 할지 여부. 기본값은 true이다.
      • webgl boolean (선택 사항) - WebGL 지원을 활성화할지 여부. 기본값은 true이다.
      • plugins boolean (선택 사항) - 플러그인을 활성화할지 여부. 기본값은 false이다.
      • experimentalFeatures boolean (선택 사항) - Chromium의 실험적 기능을 활성화할지 여부. 기본값은 false이다.
      • scrollBounce boolean (선택 사항) macOS - macOS에서 스크롤 바운스(고무 밴드) 효과를 활성화할지 여부. 기본값은 false이다.
      • enableBlinkFeatures string (선택 사항) - 활성화할 기능 문자열의 목록을 쉼표로 구분해 지정한다. 예: CSSVariables,KeyboardEventKey. 지원되는 전체 기능 문자열 목록은 RuntimeEnabledFeatures.json5 파일에서 확인할 수 있다.
      • disableBlinkFeatures string (선택 사항) - 비활성화할 기능 문자열의 목록을 쉼표로 구분해 지정한다. 예: CSSVariables,KeyboardEventKey. 지원되는 전체 기능 문자열 목록은 RuntimeEnabledFeatures.json5 파일에서 확인할 수 있다.
      • defaultFontFamily Object (선택 사항) - 폰트 패밀리의 기본 폰트를 설정한다.
        • standard string (선택 사항) - 기본값은 Times New Roman이다.
        • serif string (선택 사항) - 기본값은 Times New Roman이다.
        • sansSerif string (선택 사항) - 기본값은 Arial이다.
        • monospace string (선택 사항) - 기본값은 Courier New이다.
        • cursive string (선택 사항) - 기본값은 Script이다.
        • fantasy string (선택 사항) - 기본값은 Impact이다.
        • math string (선택 사항) - 기본값은 Latin Modern Math이다.
      • defaultFontSize Integer (선택 사항) - 기본값은 16이다.
      • defaultMonospaceFontSize Integer (선택 사항) - 기본값은 13이다.
      • minimumFontSize Integer (선택 사항) - 기본값은 0이다.
      • defaultEncoding string (선택 사항) - 기본값은 ISO-8859-1이다.
      • backgroundThrottling boolean (선택 사항) - 페이지가 백그라운드로 전환될 때 애니메이션과 타이머를 제한할지 여부. 이는 Page Visibility API에도 영향을 미친다. 단일 browserWindow에 표시된 webContents 중 하나라도 backgroundThrottling을 비활성화하면, 전체 윈도우에 대해 프레임이 그려지고 교체된다. 기본값은 true이다.
      • offscreen Object | boolean (선택 사항) - 브라우저 윈도우에 대해 오프스크린 렌더링을 활성화할지 여부. 기본값은 false이다. 자세한 내용은 오프스크린 렌더링 튜토리얼에서 확인할 수 있다.
        • useSharedTexture boolean (선택 사항) 실험적 - 가속화된 페인트 이벤트에 GPU 공유 텍스처를 사용할지 여부. 기본값은 false이다. 자세한 내용은 오프스크린 렌더링 튜토리얼에서 확인할 수 있다.
      • contextIsolation boolean (선택 사항) - Electron API와 지정된 preload 스크립트를 별도의 JavaScript 컨텍스트에서 실행할지 여부. 기본값은 true이다. preload 스크립트가 실행되는 컨텍스트는 자체 전용 documentwindow 전역 변수와 JavaScript 내장 객체(Array, Object, JSON 등)에만 접근할 수 있으며, 이는 로드된 콘텐츠에는 보이지 않는다. Electron API는 preload 스크립트에서만 사용 가능하며 로드된 페이지에서는 사용할 수 없다. 이 옵션은 신뢰할 수 없는 원격 콘텐츠를 로드할 때 사용해, 로드된 콘텐츠가 preload 스크립트와 사용 중인 Electron API를 변조할 수 없도록 해야 한다. 이 옵션은 Chrome 콘텐츠 스크립트에서 사용하는 기술과 동일하다. DevTools에서 콘솔 탭 상단의 콤보 박스에서 'Electron Isolated Context' 항목을 선택해 이 컨텍스트에 접근할 수 있다.
      • webviewTag boolean (선택 사항) - <webview> 태그를 활성화할지 여부. 기본값은 false이다. 참고: <webview>에 대해 구성된 preload 스크립트는 실행될 때 Node.js 통합이 활성화되므로, 악성 preload 스크립트가 포함된 <webview> 태그를 원격/신뢰할 수 없는 콘텐츠가 생성하지 못하도록 해야 한다. webContentswill-attach-webview 이벤트를 사용해 preload 스크립트를 제거하거나 <webview>의 초기 설정을 검증하거나 변경할 수 있다.
      • additionalArguments string[] (선택 사항) - 이 앱의 렌더러 프로세스에서 process.argv에 추가될 문자열 목록. 렌더러 프로세스의 프리로드 스크립트에 작은 데이터를 전달하는 데 유용하다.
      • safeDialogs boolean (선택 사항) - 브라우저 스타일의 연속 다이얼로그 보호를 활성화할지 여부. 기본값은 false이다.
      • safeDialogsMessage string (선택 사항) - 연속 다이얼로그 보호가 트리거될 때 표시할 메시지. 정의되지 않으면 기본 메시지가 사용되며, 현재 기본 메시지는 영어로 제공되고 지역화되지 않았다.
      • disableDialogs boolean (선택 사항) - 다이얼로그를 완전히 비활성화할지 여부. safeDialogs를 재정의한다. 기본값은 false이다.
      • navigateOnDragDrop boolean (선택 사항) - 파일이나 링크를 페이지에 드래그 앤 드롭할 때 네비게이션을 발생시킬지 여부. 기본값은 false이다.
      • autoplayPolicy string (선택 사항) - 윈도우 내 콘텐츠에 적용할 자동 재생 정책. no-user-gesture-required, user-gesture-required, document-user-activation-required 중 하나를 선택할 수 있다. 기본값은 no-user-gesture-required이다.
      • disableHtmlFullscreenWindowResize boolean (선택 사항) - HTML 전체 화면으로 전환할 때 윈도우 크기 조정을 방지할지 여부. 기본값은 false이다.
      • accessibleTitle string (선택 사항) - 화면 리더와 같은 접근성 도구에만 제공되는 대체 제목 문자열. 이 문자열은 사용자에게 직접 보이지 않는다.
      • spellcheck boolean (선택 사항) - 내장 맞춤법 검사기를 활성화할지 여부. 기본값은 true이다.
      • enableWebSQL boolean (선택 사항) - WebSQL API를 활성화할지 여부. 기본값은 true이다.
      • v8CacheOptions string (선택 사항) - blink에서 사용하는 v8 코드 캐싱 정책을 강제한다. 허용되는 값은 다음과 같다:
        • none - 코드 캐싱을 비활성화한다.
        • code - 휴리스틱 기반 코드 캐싱.
        • bypassHeatCheck - 코드 캐싱 휴리스틱을 우회하지만 지연 컴파일을 사용한다.
        • bypassHeatCheckAndEagerCompile - 위와 동일하지만 컴파일이 즉시 이루어진다. 기본 정책은 code이다.
      • enablePreferredSizeMode boolean (선택 사항) - 선호 크기 모드를 활성화할지 여부. 선호 크기는 문서의 레이아웃을 포함하는 데 필요한 최소 크기로, 스크롤이 필요하지 않다. 이 옵션을 활성화하면 선호 크기가 변경될 때 WebContents에서 preferred-size-changed 이벤트가 발생한다. 기본값은 false이다.
      • transparent boolean (선택 사항) - 게스트 페이지에 대해 배경 투명도를 활성화할지 여부. 기본값은 true이다. 참고: 게스트 페이지의 텍스트와 배경 색상은 루트 엘리먼트의 색상 스킴에서 파생된다. 투명도가 활성화되면 텍스트 색상은 여전히 변경되지만 배경은 투명하게 유지된다.

인스턴스 속성

new BrowserView로 생성된 객체는 다음과 같은 속성을 갖는다:

view.webContents 실험적 더 이상 사용되지 않음

History
Version(s)Changes
None
API DEPRECATED

이 뷰가 소유한 WebContents 객체이다.

인스턴스 메서드

new BrowserView로 생성된 객체는 다음과 같은 인스턴스 메서드를 제공한다:

view.setAutoResize(options) 실험적 사용 중단

YAML history changes:

  • options Object
    • width boolean (선택 사항) - true로 설정하면 뷰의 너비가 윈도우와 함께 늘어나고 줄어든다. 기본값은 false.
    • height boolean (선택 사항) - true로 설정하면 뷰의 높이가 윈도우와 함께 늘어나고 줄어든다. 기본값은 false.
    • horizontal boolean (선택 사항) - true로 설정하면 뷰의 x 위치와 너비가 윈도우와 비례하여 늘어나고 줄어든다. 기본값은 false.
    • vertical boolean (선택 사항) - true로 설정하면 뷰의 y 위치와 높이가 윈도우와 비례하여 늘어나고 줄어든다. 기본값은 false.

view.setBounds(bounds) 실험적 더 이상 사용되지 않음

History
Version(s)Changes
None
API DEPRECATED

윈도우를 기준으로 제공된 경계에 맞게 뷰의 크기를 조정하고 위치를 이동한다.

view.getBounds() 실험적 기능 더 이상 사용되지 않음

History
Version(s)Changes
None
API DEPRECATED

Rectangle을 반환한다.

이 BrowserView 인스턴스의 boundsObject 형태로 반환한다.

view.setBackgroundColor(color) 실험적 사용 중단됨

History
Version(s)Changes
None
API DEPRECATED
  • color string - Hex, RGB, ARGB, HSL, HSLA 또는 CSS 색상 이름 형식으로 지정된 색상. Hex 타입의 경우 알파 채널은 선택 사항이다.

유효한 color 값의 예:

  • Hex
    • #fff (RGB)
    • #ffff (ARGB)
    • #ffffff (RRGGBB)
    • #ffffffff (AARRGGBB)
  • RGB
    • rgb\(([\d]+),\s*([\d]+),\s*([\d]+)\)
      • 예: rgb(255, 255, 255)
  • RGBA
    • rgba\(([\d]+),\s*([\d]+),\s*([\d]+),\s*([\d.]+)\)
      • 예: rgba(255, 255, 255, 1.0)
  • HSL
    • hsl\((-?[\d.]+),\s*([\d.]+)%,\s*([\d.]+)%\)
      • 예: hsl(200, 20%, 50%)
  • HSLA
    • hsla\((-?[\d.]+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)
      • 예: hsla(200, 20%, 50%, 0.5)
  • 색상 이름
    • 옵션은 SkParseColor.cpp에서 확인할 수 있다.
    • CSS Color Module Level 3 키워드와 유사하지만 대소문자를 구분한다.
      • 예: blueviolet 또는 red

참고: 알파 채널이 있는 Hex 형식은 AARRGGBB 또는 ARGB를 사용하며, RRGGBBAA 또는 RGB는 사용하지 않는다.