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.
Đố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
và
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
và
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 |
|
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 |
|
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* |
|
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 |
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 |
|
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) |
|
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ể. |
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() |
|
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 |
<Object>[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 |
|
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("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 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
và
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
và
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 |
|
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 |
|
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* |
|
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 |
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 |
|
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) |
|
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ể. |
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() |
|
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 |
<Object>[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 |
|
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 |
getDisplayMedia và
WebRTC (
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