NDEFRecord: toRecords() メソッド
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
toRecords()
は NDEFRecord
インターフェイスのメソッドで、 NDEFRecord.data
を NDEFRecord.recordType
に基づいた一連のレコードに変換し、その結果を返すものです。これにより、スマートポスターや外部型レコードなど、ネストしたレコードを含む可能性のあるレコード型のペイロードを解釈することができます。
構文
toRecords()
引数
なし。
返値
NDEFRecord
のリストです。
例外
NotSupported
DOMException
-
ユーザーエージェントが
NDEFRecord.data
とNDEFRecord.recordType
のこの組み合わせを解釈する方法を知らないことを示します。
例
NDEF メッセージをペイロードとする外部レコードを読み取ります。
この例では、外部型レコードを使用して、アプリケーション定義のレコードを作成します。
これらのレコードはペイロードとして NDEFMessage
を含むことができ、アプリケーションのコンテキストで使用されるローカル型を含む独自の NDEFRecord
オブジェクトが含まれます。スマートポスターレコード型は、ペイロードとして NDEF メッセージも含んでいることに注意してください。
NDEF はレコードの順序を保証しないので、ペイロードとして NDEF メッセージを持つ外部型レコードを使用することは、関連するデータをカプセル化するのに便利です。
この例は、ソーシャルポストの外部レコードを読み取る方法を示しています。このレコードは NDEFMessage
を含み、テキストレコードとローカル型 "act" (action) のレコードを含み、定義はスマートポスターから借用しますがローカルアプリケーションコンテキストで使用されます。
const ndefReader = new NDEFReader();
await ndefReader.scan();
ndefReader.onreading = (event) => {
const externalRecord = event.message.records.find(
(record) => record.type === "example.com:smart-poster",
);
let action, text;
for (const record of externalRecord.toRecords()) {
if (record.recordType === "text") {
const decoder = new TextDecoder(record.encoding);
text = decoder.decode(record.data);
} else if (record.recordType === ":act") {
action = record.data.getUint8(0);
}
}
switch (action) {
case 0: // do the action
console.log(`Post "${text}" to timeline`);
break;
case 1: // save for later
console.log(`Save "${text}" as a draft`);
break;
case 2: // open for editing
console.log(`Show editable post with "${text}"`);
break;
}
};
仕様書
Specification |
---|
Web NFC API # dom-ndefrecord-torecords |
ブラウザーの互換性
BCD tables only load in the browser