Hướng dẫn di chuyển WebAssembly

Thông báo về việc ngừng sử dụng (P)NaCl

Do đà phát triển của tính năng hỗ trợ WebAssembly trên nhiều trình duyệt, chúng tôi dự định tập trung vào việc phát triển mã gốc trên WebAssembly trong tương lai và dự định ngừng hỗ trợ PNaCl trong quý 4 năm 2019 (ngoại trừ Ứng dụng Chrome). Chúng tôi tin rằng hệ sinh thái sôi động xung quanh WebAssembly sẽ giúp công nghệ này phù hợp hơn với các ứng dụng web mới và hiện có có hiệu suất cao, đồng thời mức sử dụng PNaCl đủ thấp để đảm bảo việc ngừng sử dụng.

Kể từ Chrome 76, PNaCl trên web mở đã được di chuyển sau Bản dùng thử theo nguyên gốc, là cơ chế để các nhà phát triển web đăng ký và có quyền truy cập vào một tính năng chưa được bật theo mặc định. Đây thường là một tính năng được đề xuất mới nhưng trong trường hợp này, tính năng này sẽ không được dùng nữa. Nhà phát triển có thể đăng ký trên Origin Trial Console (Bảng điều khiển thử nghiệm gốc) và nhận mã thông báo. Mã thông báo này có thể được nhúng vào một trang và sẽ bật tính năng mà người dùng không cần sử dụng cờ. (Để biết thêm thông tin, hãy xem hướng dẫn được liên kết). Thời gian dùng thử dự kiến sẽ kéo dài đến Chrome 78, tức là vào khoảng tháng 12 năm 2019. Thay đổi này không nhằm ảnh hưởng đến NaCl hoặc PNaCl trong các ứng dụng hoặc tiện ích Chrome. Ngoài ra, bạn cũng có thể sử dụng cờ "enable-nacl" trong chrome://flags để bật PNaCl cục bộ cho mục đích kiểm thử (cờ này cũng giữ lại chức năng hiện tại là bật NaCl "gốc" không phải PNaCl trên bất kỳ trang nào).

Gần đây, chúng tôi cũng đã thông báo về việc ngừng hỗ trợ Ứng dụng Chrome bên ngoài ChromeOS kể từ quý 1 năm 2018.

Di chuyển chuỗi công cụ

Đối với hầu hết các trường hợp sử dụng (P)NaCl, bạn nên chuyển đổi từ SDK NaCl sang Emscripten. Quá trình di chuyển có thể diễn ra khá đơn giản nếu ứng dụng của bạn có thể di chuyển sang Linux, sử dụng SDL hoặc API POSIX. Mặc dù không có hỗ trợ trực tiếp cho API NaCl / Pepper, chúng tôi đã cố gắng liệt kê các API tương đương. Đối với các trường hợp chuyển đổi khó khăn hơn, vui lòng liên hệ qua native-client-discuss@googlegroups.com

Di chuyển API

Chúng tôi đã trình bày ở đây trạng thái của các thành phần thay thế Nền tảng web cho từng API hiển thị với (P)NaCl. Ngoài ra, bảng này liệt kê thư viện hoặc tuỳ chọn trong Emscripten để cung cấp sản phẩm thay thế gần nhất.

Chúng tôi dự kiến sẽ thêm tính năng hỗ trợ luồng bộ nhớ dùng chung vào WebAssembly trong năm 2017, vì luồng là yếu tố quan trọng để so khớp các trường hợp sử dụng thú vị nhất của (P)NaCl. Các mục di chuyển giả định có hỗ trợ luồng sắp tới được đánh dấu bên dưới. Nếu tính năng kiểm soát luồng của ứng dụng phụ thuộc nhiều vào tính năng chặn Ngoài ra, bạn cũng có thể cần phải hỗ trợ luồng để quá trình chuyển đổi thuận tiện.

Mặc dù chúng tôi đã cố gắng đưa ra kết quả chính xác trong bảng này, chắc chắn không có lỗi hoặc thiếu sót nào. Nếu bạn gặp phải vấn đề, vui lòng liên hệ với chúng tôi theo địa chỉ native-client-discuss@googlegroups.com

PPAPI

PPB_Audio

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo x SDL (một phần) GAP (một phần) – AudioWorkletNode tương đương VÀO MỘT MỨC AudioWorkletSpec đã hoàn tất, nhưng AudioDeviceClient có thể phù hợp hơn với API này. Cộng đồng vẫn đang chỉ định AudioDeviceClient. Worklet có thể không tương đương với API này.
GetCurrentConfig SDL Ngữ cảnh âm thanh.* (trả về các chế độ cài đặt đã truyền vào)
StartPlayback SDL AudioBufferSourceNode.start
StopPlayback SDL AudioBufferSourceNode.stop

PPB_AudioBuffer

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetTimestamp SDL AudioBufferSourceNode.start (thông số) Được truyền vào mỗi lần thay vì được đính kèm vào vùng đệm.
SetTimestamp SDL AudioBufferSourceNode.start (tham số)
GetSampleRate SDL AudioBuffer.sampleRate
GetSampleSize GAP GAP – WebAudio chỉ sử dụng dấu phẩy động 32 bit, PPAPI sử dụng số nguyên 16 bit. Về mặt lý thuyết, PPAPI hỗ trợ nhiều kích thước lấy mẫu. Trên thực tế, công cụ này chỉ hỗ trợ các mẫu 16 bit. Rất tiếc, các nhà phát triển đã yêu cầu kích thước mẫu 16 bit để tiết kiệm mức sử dụng bộ nhớ. Phiên bản tiếp theo của quy cách Âm thanh trên web sẽ triển khai việc hỗ trợ cho mẫu 16 bit. Bạn có thể triển khai tính năng tối ưu hoá cho AudioBuffer tương tự như Firefox bằng cách sử dụng bộ đệm 16 bit cho âm thanh đến từ decodeAudioData
GetNumberOfChannels SDL AudioBuffer.numberOfChannels
GetDataBuffer SDL AudioBuffer.getChannelData
GetBufferSize SDL AudioBuffer.length

PPB_AudioConfig

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo âm thanh nổi 16Bit GAP GAP - Chỉ hỗ trợ mẫu nổi 32 bit Phiên bản tiếp theo của quy cách Âm thanh trên web sẽ triển khai việc hỗ trợ cho mẫu 16 bit.
GetSampleRate SDL AudioContext.sampleRate
GetSampleFrameCount SDL AudioBuffer.length
RecommendSampleRate SDL AudioContext.sampleRate (từ cấu trúc mặc định) Theo mặc định, AudioContext sẽ có tốc độ lấy mẫu ưu tiên khớp với tốc độ lấy mẫu thực tế của thiết bị âm thanh phần cứng.
RecommendSampleFrameCount GAP GAP – Sẽ được xử lý bằng AudioDeviceClient đã lên kế hoạch Hiện có một vấn đề chưa được giải quyết là cho phép kích thước do người dùng chỉ định, nhưng vấn đề này vẫn đang được xác định. Bạn nên xử lý vấn đề này bằng AudioDeviceClient. Công cụ này có thể cho bạn biết kích thước phù hợp cho phần cứng nhất định.

PPB_Console

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Nhật ký giờ console.log/warn/error/...
LogWithSource GAP GAP API Console được coi là một sự thay thế hoàn chỉnh, trừ phi có trường hợp sử dụng cụ thể mà nhà phát triển đưa ra đối với chức năng do LogWithSource cung cấp. Bạn có thể dùng Bản đồ nguồn trong Công cụ cho nhà phát triển để gỡ lỗi JavaScript đã biên dịch sang ngôn ngữ nguồn ban đầu.

PPB_Core

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
getTime giờ new Date().getTime()
getTimeTicks utime new Date().getTime()
IsMainThread GAP window.document !== không xác định
CallOnMainThread GAP Worker.postMessage + Atomics.wait Bạn có thể tạo chế độ đồng bộ hoá tương đương.

PPB_FileIO

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo FS (một phần) window.chooseFileSystemEntries() Tạo và mở được sử dụng theo cách khác nhau, nhưng các mảnh có sức mạnh bằng nhau.
Đang mở FS (một phần) window.chooseFileSystemEntries()
Truy vấn FS (một phần) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (một phần) – Bạn cũng có thể dùng Blob.type để kiểm tra loại MIME. Không thể xác định loại hệ thống tệp, thời gian tạo và thời gian truy cập gần đây nhất bằng API hệ thống tệp gốc.
Cảm ứng FS (một phần) FileSystemDirectoryHandle.getFile("name", {create: true})
Đã đọc FS (một phần) Blob.slice().arrayBuffer()
Viết FS (một phần) FileSystemWriter.write()
SetLength FS (một phần) FileSystemWriter.truncate()
Xả GAP (một phần) GAP (một phần) - Các tệp sẽ được xoá khi FileSystemWrite.close() được gọi Theo thiết kế, các tệp API Hệ thống tệp gốc hiển thị với hệ điều hành, do đó, cần thực hiện bước kiểm tra Duyệt web an toàn trước khi dữ liệu được hiển thị cho hệ điều hành.
Đóng FS (một phần) FileSystemWriter.close() Không huỷ các thao tác đang chờ xử lý, nhưng xoá mọi dữ liệu đã ghi đến thời điểm hiện tại vào đĩa.
ReadToArray GAP Blob.slice().arrayBuffer() hoặc Blob.arrayBuffer() Cho phép đọc song song nhiều dải ô phụ.

PPB_FileRef

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo FS (một phần) FileSystemDirectoryHandle.getFile("name", {create: true})
GetFileSystemType FS (một phần) FileSystem.type
GetName FS (một phần) File.name
GetPath FS (một phần) GAP (một phần) – Với API Hệ thống tệp gốc, bạn có thể xác định đường dẫn tương đối của một tệp từ tham chiếu đến thư mục chứa tệp đó bằng cách sử dụng FileSystemHandle.resolve(FileSystemHandle) Không thể xác định đường dẫn tuyệt đối của tệp và người dùng phải cấp quyền truy cập vào thư mục chứa tệp.
GetParent FS (một phần) GAP (một phần) – Với API Hệ thống tệp gốc, bạn có thể xác định đường dẫn tương đối của một tệp từ tham chiếu đến thư mục chứa tệp đó bằng cách sử dụng FileSystemHandle.resolve(FileSystemHandle) Người dùng phải cấp quyền truy cập vào thư mục chứa tệp.
MakeDirectory FS (một phần) FileSystemHandle.getDirectory(..., {createIfNotExists: true})
Cảm ứng FS (một phần) FileSystemDirectoryHandle.getFile("name", {create: true}) Bạn có thể đẩy thời gian sửa đổi bằng cách ghi.
Xoá FS (một phần) FileSystemDirectoryHandle.removeEntry() Không giống như PPAPI, thư mục không nhất thiết phải trống.
Đổi tên FS (một phần) GAP (một phần) - Với API Hệ thống tệp gốc, tệp có thể được ghi bằng tên mới bằng cách sử dụng kết hợp FileSystemFileHandle.getFile() cho tên mới và FileSystemFileHandle.createWriter().write() với nội dung của tệp cũ. Sau đó, FileSystemDirectoryHandle.removeEntry() để xoá tệp cũ. Không có API trực tiếp nào thực hiện việc này trong một bước trong API Hệ thống tệp gốc.
Truy vấn GAP (một phần) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (một phần) – Blob.type cũng có thể được dùng để kiểm tra loại MIME. Không thể xác định loại hệ thống tệp, thời gian tạo và thời gian truy cập gần đây nhất bằng API hệ thống tệp gốc.
ReadDirectoryEntries FS (một phần) FileSystemDirectoryHandle.getEntries()

PPB_FileSystem

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo FS (một phần) window.requestFileSystem API JS thực hiện cả hai trong một bước
Đang mở GAP window.requestFileSystem API JS thực hiện cả hai trong một bước
GetType GAP FileSystem.type

PPB_Fullscreen

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
IsFullScreen html5.h Document.fullscreenEnabled
SetFullscreen html5.h Document.requestFullscreen
GetScreenSize html5.h Document.exitFullscreen

PPB_Gamepad

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Mẫu SDL Tay điều khiển trò chơi.* Đối tượng Gamepad cho thấy một dấu thời gian liên quan đến navigationStart. Hệ thống sẽ cập nhật dữ liệu khi nhận được dữ liệu qua phần cứng https://www.w3.org/TR/gamepad/#gamepad- chỗ

PPB_Graphics2D

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL Canvas.getContext('2d')
Mô tả SDL Canvas.clientWidth + Canvas.clientHeight
PaintImageData SDL CanvasRenderingContext2D.putImageData
Cuộn GAP CanvasRenderingContext2D.scrollIntoView, CanvasRenderingContext2D.drawImage GAP (một phần) – Có thể được triển khai bằng cách vẽ canvas lên chính canvas đó, với một độ dời, sử dụng drawImage, sau đó điền vào phần còn lại.
ReplaceContents SDL CanvasRenderingContext2D.drawImage
Xả GAP Không có giá trị tương đương trực tiếp GAP (một phần) – Luôn có một thao tác xả ngầm ẩn ở cuối mã vẽ; điều này khó có thể xảy ra để thay đổi. Tuy nhiên, việc kết hợp OffscreenCanvas ImageBitmapRenderingContext cung cấp chức năng tương tự.
SetScale SDL CanvasRenderingContext2D.scale
GetScale SDL CanvasRenderingContext2D.currentTransform
SetLayerTransform SDL CanvasRenderingContext2D.setTransform CanvasRenderingContext2D.scale CanvasRenderingContext2D.translate

PPB_Graphics3D

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetAttribMaxValue OpenGL ES 3.0 WebGL 2.0 GAP (một phần) – WebGL 2.0 và khả năng hiển thị OpenGL ES 3.0 của Emscripten hỗ trợ vùng đệm khung hình nhiều mẫu do người dùng xác định, trong đó tất cả các tham số có thể định cấu hình thông qua PPAPI đều có thể được đặt.
Tạo SDL Canvas.getContext
GetAttribs SDL WebGLRenderingContext.getContextAttributes
SetAttribs SDL Canvas.getContext(.., OPTIONS)
GetError SDL WebGLRenderingContext.getError
ResizeBuffers SDL Canvas.width = w; Canvas.height = h;
SwapBuffers GAP Không có giá trị tương đương trực tiếp GAP (một phần) – Luôn có một thao tác xả ngầm ẩn ở cuối mã vẽ; điều này khó có thể xảy ra để thay đổi. Tuy nhiên, việc kết hợp OffscreenCanvas ImageBitmapRenderingContext cung cấp chức năng tương tự.

PPB_ImageData

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetNativeImageDataFormat SDL ImageData yêu cầu thứ tự RGBA
IsImageDataFormatSupported SDL ImageData yêu cầu thứ tự RGBA
Tạo SDL CanvasRenderingContext2d.createImageData
Mô tả SDL ImageData chưa bao giờ đạt được một bước tiến
Bản đồ SDL ImageData.data
Huỷ ánh xạ SDL ImageData.data

PPB_InputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
RequestInputEvents SDL Không có nguồn doanh thu tương đương trực tiếp Việc thiếu tính năng này có thể ít liên quan hơn vì JS/Wasm chạy trên luồng chính và có thể lọc các sự kiện một cách tiết kiệm hơn mà không phải thực hiện hành trình qua lại giữa các quy trình.
RequestFilteringInputEvents SDL Sự kiện chuột* phím* con lăn* chạm* thành phần*
SDL Element.addEventListener
ClearInputEventRequest SDL Element.removeEventListener
GetType SDL Các thành phần con của lớp sự kiện
GetTimeStamp SDL Event.timeStamp
GetModifiers SDL *Event.altKey/shiftKey/metaKey/ctrlKey

PPB_MouseInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL MouseEvent
GetButton SDL MouseEvent.button
GetPosition SDL MouseEvent.client*/page*/offset*
GetClickCount SDL Sự kiện dblclick' so với 'mousedown'
GetMovement SDL MouseEvent.movement*

PPB_WheelInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL WheelEvent
GetDelta SDL WheelEvent.delta*
GetTicks GAP GAP – deltaMode chứa thông tin này nhưng chưa đầy đủ. Có nội dung thảo luận về việc triển khai API WheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017
GetScrollByPage GAP GAP – deltaMode chứa thông tin này nhưng chưa đầy đủ. Có nội dung thảo luận về việc triển khai API WheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017

PPB_KeyboardInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL KeyboardEvent
GetKeyCode SDL KeyboardEvent.keyCode
GetCharacterText SDL KeyboardEvent.key
GetCode SDL KeyboardEvent.code

PPB_TouchInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL TouchEvent
AddTouchPoint SDL TouchEvent.touches.push
GetTouchCount SDL TouchEvent.touches.length
GetTouchByIndex SDL TouchEvent.touches[i]
GetTouchById SDL Touch.indentifer (để tự tìm hiểu)

PPB_IMEInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP CompositionEvent
GetText GAP CompositionEvent.data
GetSegmentNumber GAP GAP - Không có tương đương trực tiếp Bạn có thể truy xuất dữ liệu này từ CompositionEvent.data.
GetSegmentOffset GAP GAP - Không có tương đương trực tiếp
GetTargetSegment GAP GAP – Không có giá trị tương đương trực tiếp
GetSelection GAP GAP – Không có giá trị tương đương trực tiếp

PPB_Instance

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
BindGraphics SDL Canvas.getContext (moot vì liên kết là tự động).
IsFullFrame GAP GAP – Không tương đương với trình xử lý loại mime. Ứng dụng NaCl có thể được đăng ký để xử lý một loại mime cụ thể và sở hữu toàn bộ tài liệu.
DidCreate Không áp dụng <Element>[key] Quyền truy cập chung vào DOM cho phép bạn tìm ra các thuộc tính thẻ
DidDestroy Không áp dụng Không áp dụng Không được kích hoạt cho NaCl
DidChangeView Không áp dụng Sự kiện "đổi kích thước" của phần tử
DidChangeFocus Không áp dụng Sự kiện "focus", "focusin", "focusout" của phần tử
HandleDocumentLoad Không áp dụng GAP – Không có cách nào để đăng ký làm trình xử lý loại MIME Bạn có thể thiết lập các mô-đun NaCl thông qua ứng dụng + mục nhập tệp kê khai để xử lý các loại mime cụ thể.

PPB_MediaStreamAudioTrack

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Định cấu hình GAP getUserMedia() Các quy tắc ràng buộc từ getUserMedia() có thể cung cấp các giá trị cấu hình để sử dụng trong MediaStreamTrack.
GetAttrib GAP MediaStreamTrack.getSettings()
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetBuffer GAP GAP – Không có giá trị tương đương
RecycleBuffer GAP GAP - Không có tương đương
Đóng GAP MediaStreamTrack.stop()

PPB_MediaStreamVideoTrack

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP Chụp ảnh trên vải canvas Canvas Capture cung cấp khả năng giới thiệu khung hình video theo phương thức lập trình.
Định cấu hình GAP applyConstraints(), getUserMedia() GAP (một phần) – Phạm vi của các cấu hình có sẵn trong Web API có thể khác với PPAPI.
GetAttrib GAP MediaStreamSettings.width
GAP MediaStreamSettings.height
GAP GAP - không tương đương với PP_MEDIASTREAMVIDEONEXT_ATTRIB_BUFFERED_FRAMES Không thể tải trước MediaStream, vì vậy, MediaStream sẽ không bao giờ lưu vào bộ đệm: https://www.w3.org/TR/mediacapture-streams/#mediastreams-in-media-elements
GAP GAP – không tương đương với PP_MEDIASTREAMVIDEOTRACK_ATTRIB_FORMAT
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetFrame GAP GAP - Không có tương đương
RecycleFrame GAP GAP - Không có tương đương
Đóng GAP MediaStreamTrack.stop()
GetEmptyFrame GAP GAP - Không có tương đương
PutFrame GAP GAP – Không có giá trị tương đương

PPB_MessageLoop

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
GetForMainThread Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
GetCurrent Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
AttachToCurrentThread Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
Chạy Không áp dụng Hầu hết các worker đều nhận được một vòng lặp sự kiện ngầm ẩn.
PostWork Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
PostQuit Không áp dụng Hầu hết các worker đều nhận được một vòng lặp sự kiện ngầm ẩn.

PPB_Messaging

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
PostMessage Không áp dụng Window.postMessage
RegisterMessageHandler Không áp dụng Window.addEventListener
UnregisterMessageHandler Không áp dụng Window.removeEventListener

PPB_MouseCursor

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
SetCursor SDL Element.style.cursor Hỗ trợ cùng một bộ con trỏ cổ phiếu. Bạn có thể dùng con trỏ tuỳ chỉnh bằng URL(..). Bạn có thể dùng con trỏ tuỳ chỉnh động bằng URI dữ liệu. CSS3 hỗ trợ chỉ định điểm phát sóng.

PPB_MouseLock

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
LockMouse SDL Element.requestPointerLock
UnlockMouse SDL Element.exitPointerLock

PPB_OpenGLES2

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Một số phương thức OpenGLES Đóng chức năng của WebGL 1.0.
x OffscreenCanvas

PPB_TextInputController

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
SetTextInputType GAP GAP – Có thể được điền bằng API Editor phương thức nhập Một số nhà phát triển muốn có khả năng gợi ý theo cách này hoặc ưu tiên có thể chặn và hiển thị các sự kiện IME / đầu ra cùng dòng bên trong một canvas.
UpdateCaretPosition GAP GAP – Có thể được điền bằng API Trình chỉnh sửa phương thức nhập https://www.w3.org/TR/ime-api/
CancelCompositionText GAP GAP – Có thể được điền bằng API Trình chỉnh sửa phương thức nhập https://www.w3.org/TR/ime-api/
UpdateSurroundingText GAP GAP – Có thể được điền bằng API Trình chỉnh sửa phương thức nhập https://www.w3.org/TR/ime-api/

PPB_URLLoader

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo embind mới XMLHttpRequest();
Đang mở embind XMLHttpRequest.open
FollowRedirect embind Request.redirect
GAP GAP – Không có XMLHTTPRequest tương đương
GetUploadProgress embind Sự kiện XMLHttpRequest "progress"
GAP FetchObserver Chưa được đầu cơ hoặc triển khai; https://github.com/whatwg/fetch/issues/607
GetDownloadProgress embind Sự kiện XMLHttpRequest "progress"
GAP FetchObserver Chưa được đầu cơ hoặc triển khai; https://github.com/whatwg/fetch/issues/607
GetResponseInfo embind XMLHttpRequest.getAllResponseHeaders
embind Tìm nạp phản hồi.*
ReadResponseBody embind XMLHttpRequest.response
embind Nội dung.* (Câu trả lời là một nội dung)
FinishStreamingToFile embind GAP - Không có tương đương trực tiếp Cả XMLHttpRequest và Fetch đều giả định truyền trực tuyến vào bộ nhớ thay vì trực tiếp vào bộ nhớ lưu trữ.
Đóng embind XMLHttpRequest.abort
GAP Tìm nạp API: DestroySignal và abortController

PPB_URLRequestInfo

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo embind XMLHttpRequest
embind Yêu cầu tìm nạp
SetProperty GAP GAP – Không có phiên bản tương đương trực tiếp cho XMLHttpRequest XMLHttpRequest không cung cấp cách trực tiếp để giới hạn số lượng yêu cầu sau khi chuyển hướng, truyền trực tuyến đến một tệp, đặt chính sách liên kết giới thiệu hoặc thông tin xác thực.
embind Yêu cầu.*
AppendDataToBody embind XMLHttpRequest.send GAP – Cả hai đều phải có toàn bộ cơ thể chứ không phải một đoạn.
embind tìm nạp(.., tuỳ chọn:nội dung)
AppendFileToBody GAP tải lên trực tuyến fetch() https://www.chromestatus.com/features/5274139738767360
Không áp dụng <form> Bạn cũng có thể đọc bằng FileReader và tải lên, nhưng cách này giống với AppendDataToBody

PPB_URLResponseInfo

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetProperty embind XMLHttpRequest.getAllResponseHeaders + các nguồn khác
embind Tìm nạp phản hồi.*
GetBodyAsFileRef embind Tìm nạp phản hồi (Nội dung) .blob() Giả định lớp lưu trữ tối ưu hoá quá trình chuyển.

PPB_Var

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
VarFromUtf8 embind TextDecoder.decode
VarToUtf8 embind TextEncoder.encode
VarFromResource Không áp dụng Không áp dụng
VarToResource Không áp dụng Không áp dụng

PPB_VarArray

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Get embind Mảng[i]
Chuẩn bị embind Mảng[i] = x
GetLength embind Array.length
SetLength embind Array.length = n

PPB_VarArrayBuffer

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo embind ArrayBuffer(n) mới
ByteLength embind ArrayBuffer.byteLength
Bản đồ GAP GAP - Không có tương đương trực tiếp Các mô-đun Asm.js / Wasm không thể ánh xạ các vùng của một ArrayBuffer khác với một vùng nhớ khối xếp tuyến tính duy nhất của chúng. Việc nhiều bộ nhớ hoặc ánh xạ bộ nhớ trong tương lai có thể giúp cải thiện vấn đề này.
Huỷ liên kết GAP GAP – Không có giá trị tương đương trực tiếp

PPB_VarDictionary

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo embind {}
Get embind &lt;Object&gt;[i]
Chuẩn bị embind <Đối tượng>[i] = x
Xoá embind xoá <Object>[i]
HasKey embind x trong <Object>
GetKeys embind for (k trong <Object>) {} Không có giá trị cố định tương đương, nhưng bạn có thể tạo giá trị này.

PPB_VideoDecoder

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất sử dụng VideoDecoder() https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Khởi chạy GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất sử dụng tham số khởi tạo VideoDecoder() (VideoDecoderInitParameters) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Decode GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách sử dụng ReadableStream.pipeThrough(VideoDecoder) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
GetPicture GAP GAP - Sẽ được xử lý bằng API WebCodecs đề xuất bằng cách sử dụng ReadableStream.pipeThrough(VideoDecoder).pipeTo(VideoTrackWriter().writable) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
RecyclePicture GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất. Thiết kế hiện tại sẽ tự động tái chế các hình ảnh và tiếp tục quá trình giải mã. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Xả GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất. API này sẽ được gọi là Flush(), tuy nhiên, vẫn còn nội dung thảo luận về cách API này sẽ được sắp xếp theo trình tự so với các lệnh gọi giải mã. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Đặt lại GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách huỷ bỏ phiên bản VideoDecoder và tạo một phiên bản mới. Cách này sẽ không hiệu quả như phương thức đặt lại chuyên dụng, nhưng ngữ nghĩa của API Reset() vẫn đang được thảo luận. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming

PPB_VideoEncoder

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất bằng VideoEncoder()
GetSupportedProfiles GAP GAP (một phần) – navigator.mediaCapabilities.modifyInfo() Bạn phải kiểm tra từng hồ sơ được hỗ trợ.
Khởi chạy GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách sử dụng các tham số khởi chạy VideoEncoder()
GetFramesRequired GAP GAP - Không có tương đương Rất ít khả năng là nhóm khung được sử dụng nội bộ bởi Web Codec API sẽ bị lộ.
GetFrameCodedSize GAP GAP - Không có tương đương Rất ít khả năng là nhóm khung được sử dụng nội bộ bởi Web Codec API sẽ bị lộ.
GetVideoFrame GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách sử dụng ReadableStream.pipeThrough(VideoEncoder). Thao tác này sẽ mã hoá trực tiếp dữ liệu trong luồng Readable thay vì lấy một khung duy nhất để lấp đầy dữ liệu trước khi mã hoá.
Mã hóa GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất sử dụng ReadableStream.pipeThrough(VideoEncoder)
GetBitstreamBuffer GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất. Thiết kế hiện tại sẽ tự động đi qua vùng đệm luồng bit đã mã hoá được dẫn qua. API WebCodecs hiện giả định rằng vùng đệm luồng bit có thể được sao chép thay vì gộp, vì vậy, vùng đệm này sẽ không cần được tái chế.
RecycleBitstreamBuffer GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất. Thiết kế hiện tại sẽ tự động tái chế vùng đệm để tiếp tục quá trình mã hoá. Điều này có thể sẽ không thay đổi trong tương lai vì tác động đến hiệu suất sẽ nhỏ hơn.
RequestEncodingParametersChange GAP GAP – Sẽ được xử lý bởi Web Codec API được đề xuất. Một số tham số nhất định có thể được thay đổi ngay lập tức, trong khi một số tham số khác sẽ yêu cầu phải huỷ bỏ bộ mã hoá.
Đóng GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách sử dụng VideoEncoder.Close()

PPB_VideoFrame

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetTimestamp GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất.
SetTimestamp GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất.
GetFormat GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất.
GetSize GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất.
GetDataBuffer GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất.
GetDataBufferSize GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất.

PPB_View

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetRect embind Element.getBoundingClientRect
IsFullscreen embind Document.fullScreenEnabled Bao gồm tài liệu thay vì chỉ một phần tử.
IsVisible embind IntersectionObserver
IsPageVisible embind document.visibilityState
GetClipRect embind IntersectionObserver
GetDeviceScale embind window.devicePixelRatio
GetCSSScale embind <Element>.getBoundingClientStatus().width / <Element>.offsetWidth
GetScrollOffset embind <Element>.scrollTop / <Element>.scrollLeft

PPB_WebSocket

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP WebSocket.WebSocket
Kết nối GAP WebSocket.WebSocket(url, ...) Sự kiện WebSocket "open"
Đóng GAP WebSocket.close
ReceiveMessage GAP "Thông báo" của WebSocket Sự kiện "Lỗi" WebSocket Sự kiện WebSocket "đóng" Sự kiện
SendMessage GAP WebSocket.send
GetBufferedAmount GAP WebSocket.bufferedAmount
GetCloseCode GAP CloseEvent.code
GetCloseReason GAP CloseEvent.reason
GAP CloseEvent.wasClean
GetExtensions GAP WebSocket.extensions
GetProtocol GAP WebSocket.protocol
GetReadyState GAP WebSocket.readyState
GetURL GAP WebSocket.url

PPP_Graphics3D

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Mất bối cảnh đồ hoạ3D SDL Canvas "webglcontextlost" Sự kiện

PPP_InputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
HandleInputEvent SDL Element.addEventListener

PPP_Instance

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
DidCreate Không áp dụng <Element>[key] Quyền truy cập chung vào DOM cho phép bạn tìm ra các thuộc tính thẻ
DidDestroy Không áp dụng Không áp dụng Không được kích hoạt cho NaCl
DidChangeView Không áp dụng Sự kiện "đổi kích thước" của phần tử
DidChangeFocus Không áp dụng Sự kiện "focus", "focusin", "focusout" của phần tử
HandleDocumentLoad Không áp dụng GAP – Không có cách nào để đăng ký làm trình xử lý loại MIME Bạn có thể thiết lập các mô-đun NaCl thông qua ứng dụng + một mục kê khai để xử lý các loại mime cụ thể.

PPP_MessageHandler

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
HandleMessage embind MessagePort 'tin nhắn' Sự kiện Cửa sổ "tin nhắn" Sự kiện
HandleBlockingMessage Không áp dụng GAP - Không có tương đương trực tiếp Bạn có thể thực hiện quá trình đồng bộ hoá tương tự ngoài luồng chính bằng Atomics.wait. Tính năng này được thêm vào để hỗ trợ mô phỏng các API trình bổ trợ đồng bộ.

PPP_Messaging

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
HandleMessage embind MessagePort 'tin nhắn' Sự kiện Cửa sổ "tin nhắn" Sự kiện

PPP_MouseLock

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
MouseLockLost SDL Phần tử "pointerlockchange", "pointerlockerror" Sự kiện

IRT

PPB_Audio

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo x SDL (một phần) GAP (một phần) – AudioWorkletNode tương đương VÀO MỘT MỨC AudioWorkletSpec đã hoàn tất, nhưng AudioDeviceClient có thể phù hợp hơn với API này. Cộng đồng vẫn đang chỉ định AudioDeviceClient. Worklet có thể không tương đương với API này.
GetCurrentConfig SDL Ngữ cảnh âm thanh.* (trả về các chế độ cài đặt đã truyền vào)
StartPlayback SDL AudioBufferSourceNode.start
StopPlayback SDL AudioBufferSourceNode.stop

PPB_AudioBuffer

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetTimestamp SDL AudioBufferSourceNode.start (thông số) Được truyền vào mỗi lần thay vì được đính kèm vào vùng đệm.
SetTimestamp SDL AudioBufferSourceNode.start (tham số)
GetSampleRate SDL AudioBuffer.sampleRate
GetSampleSize GAP GAP – WebAudio chỉ sử dụng dấu phẩy động 32 bit, PPAPI sử dụng số nguyên 16 bit. Về mặt lý thuyết, PPAPI hỗ trợ nhiều kích thước lấy mẫu. Trên thực tế, công cụ này chỉ hỗ trợ các mẫu 16 bit. Rất tiếc, các nhà phát triển đã yêu cầu kích thước mẫu 16 bit để tiết kiệm mức sử dụng bộ nhớ. Phiên bản tiếp theo của quy cách Âm thanh trên web sẽ triển khai việc hỗ trợ cho mẫu 16 bit. Bạn có thể triển khai tính năng tối ưu hoá cho AudioBuffer tương tự như Firefox bằng cách sử dụng bộ đệm 16 bit cho âm thanh đến từ decodeAudioData
GetNumberOfChannels SDL AudioBuffer.numberOfChannels
GetDataBuffer SDL AudioBuffer.getChannelData
GetBufferSize SDL AudioBuffer.length

PPB_AudioConfig

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo âm thanh nổi 16Bit GAP GAP - Chỉ hỗ trợ mẫu nổi 32 bit Phiên bản tiếp theo của quy cách Âm thanh trên web sẽ triển khai việc hỗ trợ cho mẫu 16 bit.
GetSampleRate SDL AudioContext.sampleRate
GetSampleFrameCount SDL AudioBuffer.length
RecommendSampleRate SDL AudioContext.sampleRate (từ cấu trúc mặc định) Theo mặc định, AudioContext sẽ có tốc độ lấy mẫu ưu tiên khớp với tốc độ lấy mẫu thực tế của thiết bị âm thanh phần cứng.
RecommendSampleFrameCount GAP GAP – Sẽ được xử lý bằng AudioDeviceClient đã lên kế hoạch Hiện có một vấn đề chưa được giải quyết là cho phép kích thước do người dùng chỉ định, nhưng vấn đề này vẫn đang được xác định. Bạn nên xử lý vấn đề này bằng AudioDeviceClient. Công cụ này có thể cho bạn biết kích thước phù hợp cho phần cứng nhất định.

PPB_Console

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Nhật ký giờ console.log/warn/error/...
LogWithSource GAP GAP API Console được coi là một sự thay thế hoàn chỉnh, trừ phi có trường hợp sử dụng cụ thể mà nhà phát triển đưa ra đối với chức năng do LogWithSource cung cấp. Bạn có thể dùng Bản đồ nguồn trong Công cụ cho nhà phát triển để gỡ lỗi JavaScript đã biên dịch sang ngôn ngữ nguồn ban đầu.

PPB_Core

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
getTime giờ new Date().getTime()
getTimeTicks utime new Date().getTime()
IsMainThread GAP window.document !== không xác định
CallOnMainThread GAP Worker.postMessage + Atomics.wait Bạn có thể tạo chế độ đồng bộ hoá tương đương.

PPB_FileIO

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo FS (một phần) window.chooseFileSystemEntries() Tạo và mở được sử dụng theo cách khác nhau, nhưng các mảnh có sức mạnh bằng nhau.
Đang mở FS (một phần) window.chooseFileSystemEntries()
Truy vấn FS (một phần) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (một phần) – Bạn cũng có thể dùng Blob.type để kiểm tra loại MIME. Không thể xác định loại hệ thống tệp, thời gian tạo và thời gian truy cập gần đây nhất bằng API hệ thống tệp gốc.
Cảm ứng FS (một phần) FileSystemDirectoryHandle.getFile(&quot;name&quot;, {create: true})
Đã đọc FS (một phần) Blob.slice().arrayBuffer()
Viết FS (một phần) FileSystemWriter.write()
SetLength FS (một phần) FileSystemWriter.truncate()
Xả GAP (một phần) GAP (một phần) - Các tệp sẽ được xoá khi FileSystemWrite.close() được gọi Theo thiết kế, các tệp API Hệ thống tệp gốc hiển thị với hệ điều hành, do đó, cần thực hiện bước kiểm tra Duyệt web an toàn trước khi dữ liệu được hiển thị cho hệ điều hành.
Đóng FS (một phần) FileSystemWriter.close() Không huỷ các thao tác đang chờ xử lý, nhưng xoá mọi dữ liệu đã ghi đến thời điểm hiện tại vào đĩa.
ReadToArray GAP Blob.slice().arrayBuffer() hoặc Blob.arrayBuffer() Cho phép đọc song song nhiều dải ô phụ.

PPB_FileRef

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo FS (một phần) FileSystemDirectoryHandle.getFile("name", {create: true})
GetFileSystemType FS (một phần) FileSystem.type
GetName FS (một phần) File.name
GetPath FS (một phần) GAP (một phần) – Với API Hệ thống tệp gốc, bạn có thể xác định đường dẫn tương đối của một tệp từ tham chiếu đến thư mục chứa tệp đó bằng cách sử dụng FileSystemHandle.resolve(FileSystemHandle) Không thể xác định đường dẫn tuyệt đối của tệp và người dùng phải cấp quyền truy cập vào thư mục chứa tệp.
GetParent FS (một phần) GAP (một phần) – Với API Hệ thống tệp gốc, bạn có thể xác định đường dẫn tương đối của một tệp từ tham chiếu đến thư mục chứa tệp đó bằng cách sử dụng FileSystemHandle.resolve(FileSystemHandle) Người dùng phải cấp quyền truy cập vào thư mục chứa tệp.
MakeDirectory FS (một phần) FileSystemHandle.getDirectory(..., {createIfNotExists: true})
Cảm ứng FS (một phần) FileSystemDirectoryHandle.getFile("name", {create: true}) Bạn có thể đẩy thời gian sửa đổi bằng cách ghi.
Xoá FS (một phần) FileSystemDirectoryHandle.removeEntry() Không giống như PPAPI, thư mục không nhất thiết phải trống.
Đổi tên FS (một phần) GAP (một phần) - Với API Hệ thống tệp gốc, tệp có thể được ghi bằng tên mới bằng cách sử dụng kết hợp FileSystemFileHandle.getFile() cho tên mới và FileSystemFileHandle.createWriter().write() với nội dung của tệp cũ. Sau đó, FileSystemDirectoryHandle.removeEntry() để xoá tệp cũ. Không có API trực tiếp nào thực hiện việc này trong một bước trong API Hệ thống tệp gốc.
Truy vấn GAP (một phần) Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified GAP (một phần) – Blob.type cũng có thể được dùng để kiểm tra loại MIME. Không thể xác định loại hệ thống tệp, thời gian tạo và thời gian truy cập gần đây nhất bằng API hệ thống tệp gốc.
ReadDirectoryEntries FS (một phần) FileSystemDirectoryHandle.getEntries()

PPB_FileSystem

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo FS (một phần) window.requestFileSystem API JS thực hiện cả hai trong một bước
Đang mở GAP window.requestFileSystem API JS thực hiện cả hai trong một bước
GetType GAP FileSystem.type

PPB_Fullscreen

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
IsFullScreen html5.h Document.fullscreenEnabled
SetFullscreen html5.h Document.requestFullscreen
GetScreenSize html5.h Document.exitFullscreen

PPB_Gamepad

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Mẫu SDL Tay điều khiển trò chơi.* Đối tượng Gamepad cho thấy một dấu thời gian liên quan đến navigationStart. Hệ thống sẽ cập nhật dữ liệu khi nhận được dữ liệu qua phần cứng https://www.w3.org/TR/gamepad/#gamepad- chỗ

PPB_Graphics2D

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL Canvas.getContext('2d')
Mô tả SDL Canvas.clientWidth + Canvas.clientHeight
PaintImageData SDL CanvasRenderingContext2D.putImageData
Cuộn GAP CanvasRenderingContext2D.scrollIntoView, CanvasRenderingContext2D.drawImage GAP (một phần) – Có thể được triển khai bằng cách vẽ canvas lên chính canvas đó, với một độ dời, sử dụng drawImage, sau đó điền vào phần còn lại.
ReplaceContents SDL CanvasRenderingContext2D.drawImage
Xả GAP Không có giá trị tương đương trực tiếp GAP (một phần) – Luôn có một lượt xả ngầm ở cuối mã vẽ; điều này khó có thể thay đổi. Tuy nhiên, việc kết hợp OffscreenCanvas ImageBitmapRenderingContext cung cấp chức năng tương tự.
SetScale SDL CanvasRenderingContext2D.scale
GetScale SDL CanvasRenderingContext2D.currentTransform
SetLayerTransform SDL CanvasRenderingContext2D.setTransform CanvasRenderingContext2D.scale CanvasRenderingContext2D.translate

PPB_Graphics3D

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetAttribMaxValue OpenGL ES 3.0 WebGL 2.0 GAP (một phần) – WebGL 2.0 và khả năng hiển thị OpenGL ES 3.0 của Emscripten hỗ trợ vùng đệm khung hình nhiều mẫu do người dùng xác định, trong đó tất cả các tham số có thể định cấu hình thông qua PPAPI đều có thể được đặt.
Tạo SDL Canvas.getContext
GetAttribs SDL WebGLRenderingContext.getContextAttributes
SetAttribs SDL Canvas.getContext(.., OPTIONS)
GetError SDL WebGLRenderingContext.getError
ResizeBuffers SDL Canvas.width = w; Canvas.height = h;
SwapBuffers GAP Không có giá trị tương đương trực tiếp GAP (một phần) – Luôn có một lượt xả ngầm ở cuối mã vẽ; điều này khó có thể thay đổi. Tuy nhiên, việc kết hợp OffscreenCanvas ImageBitmapRenderingContext cung cấp chức năng tương tự.

PPB_ImageData

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetNativeImageDataFormat SDL ImageData yêu cầu thứ tự RGBA
IsImageDataFormatSupported SDL ImageData yêu cầu thứ tự RGBA
Tạo SDL CanvasRenderingContext2d.createImageData
Mô tả SDL ImageData chưa bao giờ đạt được một bước tiến
Bản đồ SDL ImageData.data
Huỷ ánh xạ SDL ImageData.data

PPB_InputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
RequestInputEvents SDL Không có nguồn doanh thu tương đương trực tiếp Việc thiếu tính năng này có thể ít liên quan hơn vì JS/Wasm chạy trên luồng chính và có thể lọc các sự kiện một cách tiết kiệm hơn mà không phải thực hiện hành trình qua lại giữa các quy trình.
RequestFilteringInputEvents SDL Sự kiện chuột* phím* con lăn* chạm* thành phần*
SDL Element.addEventListener
ClearInputEventRequest SDL Element.removeEventListener
GetType SDL Các thành phần con của lớp sự kiện
GetTimeStamp SDL Event.timeStamp
GetModifiers SDL *Event.altKey/shiftKey/metaKey/ctrlKey

PPB_MouseInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL MouseEvent
GetButton SDL MouseEvent.button
GetPosition SDL MouseEvent.client*/page*/offset*
GetClickCount SDL Sự kiện dblclick' so với 'mousedown'
GetMovement SDL MouseEvent.movement*

PPB_WheelInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL WheelEvent
GetDelta SDL WheelEvent.delta*
GetTicks GAP GAP – deltaMode chứa thông tin này nhưng chưa đầy đủ. Có nội dung thảo luận về việc triển khai API WheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017
GetScrollByPage GAP GAP – deltaMode chứa thông tin này nhưng chưa đầy đủ. Có nội dung thảo luận về việc triển khai API WheelEvent.deltaMode: https://github.com/w3c/uievents/issues/181#issuecomment-537811017

PPB_KeyboardInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL KeyboardEvent
GetKeyCode SDL KeyboardEvent.keyCode
GetCharacterText SDL KeyboardEvent.key
GetCode SDL KeyboardEvent.code

PPB_TouchInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo SDL TouchEvent
AddTouchPoint SDL TouchEvent.touches.push
GetTouchCount SDL TouchEvent.touches.length
GetTouchByIndex SDL TouchEvent.touches[i]
GetTouchById SDL Touch.indentifer (để tự tìm hiểu)

PPB_IMEInputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP CompositionEvent
GetText GAP CompositionEvent.data
GetSegmentNumber GAP GAP - Không có tương đương trực tiếp Bạn có thể truy xuất dữ liệu này từ CompositionEvent.data.
GetSegmentOffset GAP GAP - Không có tương đương trực tiếp
GetTargetSegment GAP GAP – Không có giá trị tương đương trực tiếp
GetSelection GAP GAP – Không có giá trị tương đương trực tiếp

PPB_Instance

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
BindGraphics SDL Canvas.getContext (moot vì liên kết là tự động).
IsFullFrame GAP GAP – Không tương đương với trình xử lý loại mime. Ứng dụng NaCl có thể được đăng ký để xử lý một loại mime cụ thể và sở hữu toàn bộ tài liệu.
DidCreate Không áp dụng <Element>[key] Quyền truy cập chung vào DOM cho phép bạn tìm ra các thuộc tính thẻ
DidDestroy Không áp dụng Không áp dụng Không được kích hoạt cho NaCl
DidChangeView Không áp dụng Sự kiện "đổi kích thước" của phần tử
DidChangeFocus Không áp dụng Sự kiện "focus", "focusin", "focusout" của phần tử
HandleDocumentLoad Không áp dụng GAP – Không có cách nào để đăng ký làm trình xử lý loại MIME Bạn có thể thiết lập các mô-đun NaCl thông qua ứng dụng + mục nhập tệp kê khai để xử lý các loại mime cụ thể.

PPB_MediaStreamAudioTrack

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Định cấu hình GAP getUserMedia() Các quy tắc ràng buộc từ getUserMedia() có thể cung cấp các giá trị cấu hình để sử dụng trong MediaStreamTrack.
GetAttrib GAP MediaStreamTrack.getSettings()
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetBuffer GAP GAP – Không có giá trị tương đương
RecycleBuffer GAP GAP - Không có tương đương
Đóng GAP MediaStreamTrack.stop()

PPB_MediaStreamVideoTrack

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP Chụp ảnh trên vải canvas Canvas Capture cung cấp khả năng giới thiệu khung hình video theo phương thức lập trình.
Định cấu hình GAP applyConstraints(), getUserMedia() GAP (một phần) – Phạm vi của các cấu hình có sẵn trong Web API có thể khác với PPAPI.
GetAttrib GAP MediaStreamSettings.width
GAP MediaStreamSettings.height
GAP GAP - không tương đương với PP_MEDIASTREAMVIDEONEXT_ATTRIB_BUFFERED_FRAMES Không thể tải trước MediaStream, vì vậy, MediaStream sẽ không bao giờ lưu vào bộ đệm: https://www.w3.org/TR/mediacapture-streams/#mediastreams-in-media-elements
GAP GAP – không tương đương với PP_MEDIASTREAMVIDEOTRACK_ATTRIB_FORMAT
GetId GAP MediaStreamTrack.id
HasEnded GAP MediaStreamTrack.readyState
GetFrame GAP GAP - Không có tương đương
RecycleFrame GAP GAP - Không có tương đương
Đóng GAP MediaStreamTrack.stop()
GetEmptyFrame GAP GAP - Không có tương đương
PutFrame GAP GAP – Không có giá trị tương đương

PPB_MessageLoop

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
GetForMainThread Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
GetCurrent Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
AttachToCurrentThread Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
Chạy Không áp dụng Hầu hết các worker đều nhận được một vòng lặp sự kiện ngầm ẩn.
PostWork Không áp dụng Chủ yếu là moot, worker sẽ nhận được vòng lặp sự kiện ngầm ẩn.
PostQuit Không áp dụng Hầu hết các worker đều nhận được một vòng lặp sự kiện ngầm ẩn.

PPB_Messaging

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
PostMessage Không áp dụng Window.postMessage
RegisterMessageHandler Không áp dụng Window.addEventListener
UnregisterMessageHandler Không áp dụng Window.removeEventListener

PPB_MouseCursor

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
SetCursor SDL Element.style.cursor Hỗ trợ cùng một bộ con trỏ cổ phiếu. Bạn có thể dùng con trỏ tuỳ chỉnh bằng URL(..). Bạn có thể dùng con trỏ tuỳ chỉnh động bằng URI dữ liệu. CSS3 hỗ trợ chỉ định điểm phát sóng.

PPB_MouseLock

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
LockMouse SDL Element.requestPointerLock
UnlockMouse SDL Element.exitPointerLock

PPB_OpenGLES2

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Một số phương thức OpenGLES Đóng chức năng của WebGL 1.0.
x OffscreenCanvas

PPB_TextInputController

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
SetTextInputType GAP GAP – Có thể được điền bằng API Editor phương thức nhập Một số nhà phát triển muốn có khả năng gợi ý theo cách này hoặc ưu tiên có thể chặn và hiển thị các sự kiện IME / đầu ra cùng dòng bên trong một canvas.
UpdateCaretPosition GAP GAP – Có thể được điền bằng API Trình chỉnh sửa phương thức nhập https://www.w3.org/TR/ime-api/
CancelCompositionText GAP GAP – Có thể được điền bằng API Trình chỉnh sửa phương thức nhập https://www.w3.org/TR/ime-api/
UpdateSurroundingText GAP GAP – Có thể được điền bằng API Trình chỉnh sửa phương thức nhập https://www.w3.org/TR/ime-api/

PPB_URLLoader

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo embind mới XMLHttpRequest();
Đang mở embind XMLHttpRequest.open
FollowRedirect embind Request.redirect
GAP GAP – Không có XMLHTTPRequest tương đương
GetUploadProgress embind Sự kiện XMLHttpRequest "progress"
GAP FetchObserver Chưa được đầu cơ hoặc triển khai; https://github.com/whatwg/fetch/issues/607
GetDownloadProgress embind Sự kiện XMLHttpRequest "progress"
GAP FetchObserver Chưa được đầu cơ hoặc triển khai; https://github.com/whatwg/fetch/issues/607
GetResponseInfo embind XMLHttpRequest.getAllResponseHeaders
embind Tìm nạp phản hồi.*
ReadResponseBody embind XMLHttpRequest.response
embind Nội dung.* (Câu trả lời là một nội dung)
FinishStreamingToFile embind GAP - Không có tương đương trực tiếp Cả XMLHttpRequest và Fetch đều giả định truyền trực tuyến vào bộ nhớ thay vì trực tiếp vào bộ nhớ lưu trữ.
Đóng embind XMLHttpRequest.abort
GAP Tìm nạp API: DestroySignal và abortController

PPB_URLRequestInfo

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo embind XMLHttpRequest
embind Yêu cầu tìm nạp
SetProperty GAP GAP – Không có phiên bản tương đương trực tiếp cho XMLHttpRequest XMLHttpRequest không cung cấp cách trực tiếp để giới hạn số lượng yêu cầu sau khi chuyển hướng, truyền trực tuyến đến một tệp, đặt chính sách liên kết giới thiệu hoặc thông tin xác thực.
embind Yêu cầu.*
AppendDataToBody embind XMLHttpRequest.send GAP – Cả hai đều phải có toàn bộ cơ thể chứ không phải một đoạn.
embind tìm nạp(.., tuỳ chọn:nội dung)
AppendFileToBody GAP tải lên trực tuyến fetch() https://www.chromestatus.com/features/5274139738767360
Không áp dụng <form> Bạn cũng có thể đọc bằng FileReader và tải lên, nhưng cách này giống với AppendDataToBody

PPB_URLResponseInfo

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetProperty embind XMLHttpRequest.getAllResponseHeaders + các nguồn khác
embind Tìm nạp phản hồi.*
GetBodyAsFileRef embind Tìm nạp phản hồi (Nội dung) .blob() Giả định lớp lưu trữ tối ưu hoá quá trình chuyển.

PPB_Var

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
VarFromUtf8 embind TextDecoder.decode
VarToUtf8 embind TextEncoder.encode
VarFromResource Không áp dụng Không áp dụng
VarToResource Không áp dụng Không áp dụng

PPB_VarArray

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Get embind Mảng[i]
Chuẩn bị embind Mảng[i] = x
GetLength embind Array.length
SetLength embind Array.length = n

PPB_VarArrayBuffer

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo embind ArrayBuffer(n) mới
ByteLength embind ArrayBuffer.byteLength
Bản đồ GAP GAP - Không có tương đương trực tiếp Các mô-đun Asm.js / Wasm không thể ánh xạ các vùng của một ArrayBuffer khác với một vùng nhớ khối xếp tuyến tính duy nhất của chúng. Việc nhiều bộ nhớ hoặc ánh xạ bộ nhớ trong tương lai có thể giúp cải thiện vấn đề này.
Huỷ liên kết GAP GAP – Không có giá trị tương đương trực tiếp

PPB_VarDictionary

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo embind {}
Get embind &lt;Object&gt;[i]
Chuẩn bị embind <Đối tượng>[i] = x
Xoá embind xoá <Object>[i]
HasKey embind x trong <Object>
GetKeys embind for (k trong <Object>) {} Không có giá trị cố định tương đương, nhưng bạn có thể tạo giá trị này.

PPB_VideoDecoder

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất sử dụng VideoDecoder() https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Khởi chạy GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất sử dụng tham số khởi tạo VideoDecoder() (VideoDecoderInitParameters) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Decode GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách sử dụng ReadableStream.pipeThrough(VideoDecoder) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
GetPicture GAP GAP - Sẽ được xử lý bằng API WebCodecs đề xuất bằng cách sử dụng ReadableStream.pipeThrough(VideoDecoder).pipeTo(VideoTrackWriter().writable) https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
RecyclePicture GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất. Thiết kế hiện tại sẽ tự động tái chế các hình ảnh và tiếp tục quá trình giải mã. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Xả GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất. API này sẽ được gọi là Flush(), tuy nhiên, vẫn còn nội dung thảo luận về cách API này sẽ được sắp xếp theo trình tự so với các lệnh gọi giải mã. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming
Đặt lại GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách huỷ bỏ phiên bản VideoDecoder và tạo một phiên bản mới. Cách này sẽ không hiệu quả như phương thức đặt lại chuyên dụng, nhưng ngữ nghĩa của API Reset() vẫn đang được thảo luận. https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming

PPB_VideoEncoder

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất bằng VideoEncoder()
GetSupportedProfiles GAP GAP (một phần) – navigator.mediaCapabilities.modifyInfo() Bạn phải kiểm tra từng hồ sơ được hỗ trợ.
Khởi chạy GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách sử dụng các tham số khởi chạy VideoEncoder()
GetFramesRequired GAP GAP - Không có tương đương Rất ít khả năng là nhóm khung được sử dụng nội bộ bởi Web Codec API sẽ bị lộ.
GetFrameCodedSize GAP GAP - Không có tương đương Rất ít khả năng là nhóm khung được sử dụng nội bộ bởi Web Codec API sẽ bị lộ.
GetVideoFrame GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách sử dụng ReadableStream.pipeThrough(VideoEncoder). Thao tác này sẽ mã hoá trực tiếp dữ liệu trong luồng Readable thay vì lấy một khung duy nhất để lấp đầy dữ liệu trước khi mã hoá.
Mã hóa GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất sử dụng ReadableStream.pipeThrough(VideoEncoder)
GetBitstreamBuffer GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất. Thiết kế hiện tại sẽ tự động đi qua vùng đệm luồng bit đã mã hoá được dẫn qua. API WebCodecs hiện giả định rằng vùng đệm luồng bit có thể được sao chép thay vì gộp, vì vậy, vùng đệm này sẽ không cần được tái chế.
RecycleBitstreamBuffer GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất. Thiết kế hiện tại sẽ tự động tái chế vùng đệm để tiếp tục quá trình mã hoá. Điều này có thể sẽ không thay đổi trong tương lai vì tác động đến hiệu suất sẽ nhỏ hơn.
RequestEncodingParametersChange GAP GAP – Sẽ được xử lý bởi Web Codec API được đề xuất. Một số tham số nhất định có thể được thay đổi ngay lập tức, trong khi một số tham số khác sẽ yêu cầu phải huỷ bỏ bộ mã hoá.
Đóng GAP GAP - Sẽ được xử lý bằng API WebCodecs được đề xuất bằng cách sử dụng VideoEncoder.Close()

PPB_VideoFrame

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetTimestamp GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất.
SetTimestamp GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất.
GetFormat GAP GAP – Sẽ được xử lý bằng API WebCodecs được đề xuất.
GetSize GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất.
GetDataBuffer GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất.
GetDataBufferSize GAP GAP – Sẽ được xử lý bằng API WebCodecs đề xuất.

PPB_View

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetRect embind Element.getBoundingClientRect
IsFullscreen embind Document.fullScreenEnabled Bao gồm tài liệu thay vì chỉ một phần tử.
IsVisible embind IntersectionObserver
IsPageVisible embind document.visibilityState
GetClipRect embind IntersectionObserver
GetDeviceScale embind window.devicePixelRatio
GetCSSScale embind <Element>.getBoundingClientStatus().width / <Element>.offsetWidth
GetScrollOffset embind <Element>.scrollTop / <Element>.scrollLeft

PPB_WebSocket

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo GAP WebSocket.WebSocket
Kết nối GAP WebSocket.WebSocket(url, ...) Sự kiện WebSocket "open"
Đóng GAP WebSocket.close
ReceiveMessage GAP "Thông báo" của WebSocket Sự kiện "Lỗi" WebSocket Sự kiện WebSocket "đóng" Sự kiện
SendMessage GAP WebSocket.send
GetBufferedAmount GAP WebSocket.bufferedAmount
GetCloseCode GAP CloseEvent.code
GetCloseReason GAP CloseEvent.reason
GAP CloseEvent.wasClean
GetExtensions GAP WebSocket.extensions
GetProtocol GAP WebSocket.protocol
GetReadyState GAP WebSocket.readyState
GetURL GAP WebSocket.url

PPP_Graphics3D

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Mất bối cảnh đồ hoạ3D SDL Canvas "webglcontextlost" Sự kiện

PPP_InputEvent

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
HandleInputEvent SDL Element.addEventListener

PPP_Instance

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
DidCreate Không áp dụng <Element>[key] Quyền truy cập chung vào DOM cho phép bạn tìm ra các thuộc tính thẻ
DidDestroy Không áp dụng Không áp dụng Không được kích hoạt cho NaCl
DidChangeView Không áp dụng Sự kiện "đổi kích thước" của phần tử
DidChangeFocus Không áp dụng Sự kiện "focus", "focusin", "focusout" của phần tử
HandleDocumentLoad Không áp dụng GAP – Không có cách nào để đăng ký làm trình xử lý loại MIME Bạn có thể thiết lập các mô-đun NaCl thông qua ứng dụng + một mục kê khai để xử lý các loại mime cụ thể.

PPP_MessageHandler

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
HandleMessage embind MessagePort 'tin nhắn' Sự kiện Cửa sổ "tin nhắn" Sự kiện
HandleBlockingMessage Không áp dụng GAP - Không có tương đương trực tiếp Bạn có thể thực hiện quá trình đồng bộ hoá tương tự ngoài luồng chính bằng Atomics.wait. Tính năng này được thêm vào để hỗ trợ mô phỏng các API trình bổ trợ đồng bộ.

PPP_Messaging

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
HandleMessage embind MessagePort 'tin nhắn' Sự kiện Cửa sổ "tin nhắn" Sự kiện

PPP_MouseLock

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
MouseLockLost SDL Phần tử "pointerlockchange", "pointerlockerror" Sự kiện

PPAPI (Ứng dụng)

PPB_HostResolver

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo x GAP GAP (một phần) - Không có tương đương trực tiếp
Giải quyết x GAP GAP (một phần) - Không có tương đương trực tiếp
GetCanonicalName x GAP GAP (một phần) – Không có giá trị tương đương trực tiếp
GetNetAddressCount x GAP GAP (một phần) – Không có giá trị tương đương trực tiếp
GetNetAddress x GAP GAP (một phần) - Không có tương đương trực tiếp

PPB_NetAddress

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
CreateFromIPv4Address x GAP GAP (một phần) – Không có giá trị tương đương trực tiếp
CreateFromIPv6Address x GAP GAP (một phần) - Không có tương đương trực tiếp
GetFamily x GAP GAP (một phần) - Không có tương đương trực tiếp
DescribeAsString x GAP GAP (một phần) – Không có giá trị tương đương trực tiếp
DescribeAsIPv4Address x GAP GAP (một phần) - Không có tương đương trực tiếp
DescribeAsIPv6Address x GAP GAP (một phần) - Không có tương đương trực tiếp

PPB_NetworkList

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetCount x GAP GAP - Không có tương đương trực tiếp
GetName x GAP GAP - Không có tương đương trực tiếp
GetType x GAP GAP - Không có tương đương trực tiếp
GetState x GAP GAP – Không có giá trị tương đương trực tiếp
GetIpAddress x GAP GAP – Không có giá trị tương đương trực tiếp
GetDisplayName x GAP GAP - Không có tương đương trực tiếp
GetMTU x GAP GAP – Không có giá trị tương đương trực tiếp

PPB_NetworkMonitor

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
Tạo x GAP GAP – Không có giá trị tương đương trực tiếp
UpdateNetworkList x GAP GAP - Không có tương đương trực tiếp

PPB_NetworkProxy

Phương thức PPAPI Giả định các luồng emscripten Web API Các điểm hạn chế
GetProxyForURL x GAP GAP - Không có tương đương trực tiếp

PPB_TCPSocket và PPB_UDPSocket

Không có mối liên kết trực tiếp 1:1 cho quá trình di chuyển. Thay vào đó, chúng tôi đã đưa ra một số cho người dùng mới và lộ trình di chuyển được đề xuất.

Trường hợp sử dụng Đề xuất
Chia sẻ màn hình getDisplayMediaWebRTC ( bản minh hoạ)
Tải từ máy chủ cục bộ để giảm thiểu mức sử dụng băng thông XHR, Tìm nạp, Luồng, Trình chạy dịch vụ, API Bộ nhớ đệm
Tải từ một phiên bản cục bộ của ứng dụng web/Kết nối với một phiên bản cục bộ của ứng dụng web WebRTC
Chat (Trò chuyện) WebSocket*
Giao tiếp âm thanh/video theo thời gian thực WebRTC
Cộng tác WebSocket*
Thời gian thực trò chơi nhiều người chơi WebTransport** trừ phi P2P, trong trường hợp đó là WebRTC (hoặc WebTransport qua RTCIceTransport)
Phát trực tuyến tương tác theo thời gian thực WebTransport**
Giao tiếp với máy chủ kế thừa Máy chủ proxy hoặc phần mềm trung gian để thực hiện chuyển đổi giao thức. Gửi ý kiến phản hồi đến bit.ly/network-api-gaps

*: Hoặc WebTransport trong tương lai

**: Xem chromestatus để biết tình trạng còn hàng