我想向用户创建一个弹出消息,以允许从网页中读取NFC阅读器的权限。 我已经编写了Javascript代码并将其链接到html,但是在任何请求上都没有激活弹出窗口。
我不会弹出窗口,而是希望它在所有浏览器和智能手机上都能正常工作。
这些是我的控制台日志错误。 未捕获的ReferenceError:未在Permissions.js:73上定义NDEFReader Permissions.js:17未捕获(承诺)TypeError:无法对“ Permissions”执行“ query”:GenericSensorExtraClasses标志未启用。 在checkPermission(permissions.js:17) 在Permissions.js:36
if ('permissions' in navigator) {
var logTarget = document.getElementById('logTarget');
function handleChange(permissionName, newState) {
var timeBadge = new Date().toTimeString().split(' ')[0];
var newStateInfo = document.createElement('p');
newStateInfo.innerHTML = '' + timeBadge + ' State of ' + permissionName + ' permission status changed to ' + newState + '.';
logTarget.appendChild(newStateInfo);
}
function checkPermission(permissionName, descriptor) {
try {
navigator.permissions.query(Object.assign({ name: permissionName }, descriptor))
.then(function (permission) {
document.getElementById(permissionName + '-status').innerHTML = permission.state;
permission.addEventListener('change', function (e) {
document.getElementById(permissionName + '-status').innerHTML = permission.state;
handleChange(permissionName, permission.state);
});
});
} catch (e) {
}
}
checkPermission('geolocation');
checkPermission('notifications');
checkPermission('push', { userVisibleOnly: true });
checkPermission('midi', { sysex: true });
checkPermission('background-sync');
checkPermission('ambient-light-sensor');
checkPermission('accelerometer');
checkPermission('gyroscope');
checkPermission('magnetometer');
checkPermission('nfc');
var noop = function () { };
navigator.getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia);
function requestGeolocation() {
navigator.geolocation.getCurrentPosition(noop);
} function requestNotifications() {
Notification.requestPermission();
} function requestPush() {
navigator.serviceWorker.getRegistration()
.then(function (serviceWorkerRegistration) {
serviceWorkerRegistration.pushManager.subscribe();
});
} function requestMidi() {
navigator.requestMIDIAccess({ sysex: true });
} function requestCamera() {
navigator.getUserMedia({ video: true }, noop, noop)
} function requestMicrophone() {
navigator.getUserMedia({ audio: true }, noop, noop)
} function requestNfc() {
Notification.requestPermission();
}
} const reader = new NDEFReader()
reader.scan(options)
reader.addEventListener('reading', listener)
reader.addEventListener('error', listener)
const writer = new NDEFWriter()
writer.write(message, options)
答案 0 :(得分:0)