NDEFReader: scan() method
        
        
          Limited availability
        
        
        
          
                
              
                
              
                
              
        
        
      
      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.
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
scan(options)
Parameters
- optionsOptional
- 
An object with the following properties: - signal
- 
An AbortSignalthat allows cancelling thisscan()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 AbortSignalpassed in theoptionsargument.
- 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
| Specification | 
|---|
| Web NFC> # dom-ndefreader-scan> | 
Browser compatibility
Loading…