Chrome权限

问题描述 投票:0回答:1

我想向用户创建一个弹出消息,以允许从网页中读取NFC阅读器的权限。我已经编写了Javascript代码并将其链接到html,但是在任何请求上都没有激活弹出窗口。

我没有弹出窗口,我想让它在所有浏览器和智能手机上都能正常工作。

这些是我的控制台日志错误。未捕获的ReferenceError:未在Permissions.js:73上定义NDEFReaderPermissions.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)
javascript nfc
1个回答
0
投票
  • 目前,只有Android上的Chrome Canary支持NFC阅读器。
  • 要在此canary版本上激活此功能,您需要提供令牌(在页面上或在服务器的页面响应标头上),或显式启用此功能,如下所述:https://web.dev/nfc/#use
© www.soinside.com 2019 - 2024. All rights reserved.