NDEFReader

Khả dụng hạn chế

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Giao diện NDEFReader của Web NFC API được dùng để đọc từ và ghi dữ liệu vào các thiết bị NFC tương thích, ví dụ như thẻ NFC hỗ trợ NDEF, khi các thiết bị này nằm trong trường cảm ứng từ của reader.

EventTarget NDEFReader

Hàm khởi tạo

NDEFReader() Thử nghiệm

Trả về một đối tượng NDEFReader mới.

Phương thức phiên bản

Giao diện NDEFReader kế thừa các phương thức của EventTarget, giao diện cha của nó.

NDEFReader.scan() Thử nghiệm

Kích hoạt thiết bị đọc và trả về một Promise giải quyết khi thao tác đọc thẻ NFC được lên lịch hoặc bị từ chối nếu gặp lỗi phần cứng hoặc quyền. Phương thức này kích hoạt yêu cầu cấp quyền nếu quyền "nfc" chưa được cấp trước đó.

NDEFReader.write() Thử nghiệm

Cố gắng ghi thông điệp NDEF vào thẻ và trả về một Promise giải quyết khi thông điệp đã được ghi vào thẻ hoặc bị từ chối nếu gặp lỗi phần cứng hoặc quyền. Phương thức này kích hoạt yêu cầu cấp quyền nếu quyền "nfc" chưa được cấp trước đó.

Sự kiện

Kế thừa sự kiện từ đối tượng cha, EventTarget.

reading Thử nghiệm

Được kích hoạt khi có lần đọc mới từ các thiết bị NFC tương thích.

readingerror Thử nghiệm

Được kích hoạt khi thẻ ở gần thiết bị đọc nhưng không thể đọc được.

Ví dụ

Xử lý lần đọc ban đầu trong khi ghi

Ví dụ dưới đây cho thấy cách điều phối giữa handler đọc chung và một handler được dùng cụ thể để ghi một lần. Để ghi, cần tìm và đọc thẻ. Điều này cho phép bạn kiểm tra xem thẻ có thực sự là thẻ bạn muốn ghi vào không. Đó là lý do tại sao nên gọi write() từ sự kiện đọc.

js
const ndef = new NDEFReader();
let ignoreRead = false;

ndef.onreading = (event) => {
  if (ignoreRead) {
    return; // write pending, ignore read.
  }

  console.log("We read a tag, but not during pending write!");
};

function write(data) {
  ignoreRead = true;
  return new Promise((resolve, reject) => {
    ndef.addEventListener(
      "reading",
      (event) => {
        // Check if we want to write to this tag, or reject.
        ndef
          .write(data)
          .then(resolve, reject)
          .finally(() => (ignoreRead = false));
      },
      { once: true },
    );
  });
}

await ndef.scan();
try {
  await write("Hello World");
  console.log("We wrote to a tag!");
} catch (err) {
  console.error("Something went wrong", err);
}

Thông số kỹ thuật

Thông số kỹ thuật
Web NFC
# the-ndefreader-object

Tương thích trình duyệt