NDEFReader: scan() method
The scan() method of the NDEFReader interface activates a reading device and returns a Promise that either resolves when an NFC tag read operation is scheduled or rejects if a hardware or permission error is encountered. This method triggers a permission prompt if the "nfc" permission has not been previously granted.
Syntax
Parameters
options Optional
-
An object with the following properties:
-
signal
-
An AbortSignal that allows cancelling this scan() operation.
Return value
A Promise that resolves immediately after scheduling read operations for the NFC adapter.
Exceptions
This method doesn't throw exceptions; instead, it rejects the returned promise, passing a DOMException whose name is one of the following:
AbortError DOMException
-
Returned if the scan operation was aborted with the AbortSignal passed in the options argument.
InvalidStateError DOMException
-
Returned if there's already an ongoing scan.
NotAllowedError DOMException
-
Returned if the permission for this operation was rejected.
NotSupportedError DOMException
-
Returned if there is no NFC adapter compatible with Web NFC or a connection cannot be established.
Examples
Handle scanning errors
This example shows what happens when a scan promise rejects and readingerror is thrown.
const ndef = new NDEFReader();
ndef
.scan()
.then(() => {
console.log("Scan started successfully.");
ndef.onreadingerror = (event) => {
console.log(
"Error! Cannot read data from the NFC tag. Try a different one?",
);
};
ndef.onreading = (event) => {
console.log("NDEF message read.");
};
})
.catch((error) => {
console.log(`Error! Scan failed to start: ${error}.`);
});
Specifications
Browser compatibility
|
Desktop |
Mobile |
|
Chrome |
Edge |
Firefox |
Internet Explorer |
Opera |
Safari |
WebView Android |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
scan |
No |
No |
No |
No |
No |
No |
89 |
89 |
No |
63 |
No |
15.0 |