第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法讓Chrome“忘記”一個設(shè)備來測試navigator.usb.requestDevice

有沒有辦法讓Chrome“忘記”一個設(shè)備來測試navigator.usb.requestDevice

HUX布斯 2023-10-14 16:00:58
我希望從使用WebUSB遷移到SerialAPI (這里有很好的解釋)。當前代碼:try {    let device = await navigator.usb.requestDevice({    filters: [{            usbVendorId: RECEIVER_VENDOR_ID        }]    })    this.connect(device)} catch (error) {    console.log(DEVICE_NAME + ': Permission Denied')}新代碼:try {    let device = await navigator.serial.requestPort({    filters: [{            usbVendorId: RECEIVER_VENDOR_ID        }]    })    this.connect(device)} catch (error) {    console.log(DEVICE_NAME + ': Permission Denied')}新代碼似乎可以工作,但我認為這是因為瀏覽器已經(jīng)通過舊代碼請求了設(shè)備。我嘗試過重新啟動 Chrome 并清除所有瀏覽歷史記錄。甚至關(guān)閉了 USB 聲明頁面并使用另一個應(yīng)用程序聲明了該設(shè)備(在此期間返回錯誤DOMException: Unable to claim interface),但 Chrome 似乎不想再次詢問。它只是愉快地通過先前的連接傳輸數(shù)據(jù)。我希望使用 SerialAPI 能夠避免與其他進程爭奪 USB,或者至少輸給它們。更新我已經(jīng)忘記了:Failed to execute 'requestPort' on 'Serial': "Must be handling a user gesture to show a permission request"這是否意味著用戶需要使用按鈕通過 SerialUSB 連接到設(shè)備?我認為使用 WebUSB 我能夠自動彈出連接窗口。
查看完整描述

3 回答

?
大話西游666

TA貢獻1817條經(jīng)驗 獲得超14個贊

對于這兩個 API,如更新中所述,需要用戶手勢才能調(diào)用requestDevice()orrequestPort()方法。無法自動彈出此提示。(如果存在錯誤,請告知 Chrome 團隊,以便我們修復(fù)它。)

通過 WebUSB API 和 Web Serial API 授予站點的權(quán)限目前是單獨跟蹤的,因此通過其中一個 API 訪問設(shè)備的權(quán)限不會自動轉(zhuǎn)換為另一個權(quán)限。

目前還沒有一種方法可以通過編程忘記設(shè)備權(quán)限。這將需要navigator.permissions.revoke()方法,該方法已被放棄。不過,您可以在訪問網(wǎng)站時單擊地址欄中的“鎖定”圖標或轉(zhuǎn)至 chrome://settings/content/usbDevices(適用于 USB 設(shè)備)和 chrome://settings/,手動撤銷訪問設(shè)備的權(quán)限。 content/serialPorts(用于串行端口)。


查看完整回答
反對 回復(fù) 2023-10-14
?
GCT1015

TA貢獻1827條經(jīng)驗 獲得超4個贊

要讓 Chrome“忘記”之前通過 navigator.usb.requestDevice API 配對的 WebUSB 設(shè)備:

  1. 打開與您想要忘記的設(shè)備配對的頁面

  2. 單擊地址欄中的圖標

  3. 單擊設(shè)備旁邊的 x。如果未列出任何內(nèi)容,則表明該網(wǎng)頁沒有配對的設(shè)備。

https://img1.sycdn.imooc.com/652a4b060001cf1c07340635.jpg

查看完整回答
反對 回復(fù) 2023-10-14
?
米琪卡哇伊

TA貢獻1998條經(jīng)驗 獲得超6個贊

新代碼不起作用。這似乎是因為 Chrome 已經(jīng)通過舊代碼與該端口配對?!靶麓a”不可能起作用,因為正如 Kalido 的評論中指出的那樣,SerialAPI(由于其強大功能)需要用戶手勢才能連接。


我用來實際連接和獲取數(shù)據(jù)的代碼基本上是由OP中上述鏈接的幾個部分構(gòu)建的:


navigator.serial.addEventListener('connect', e => {

  // Add |e.target| to the UI or automatically connect.

  console.log("connected");

});


navigator.serial.addEventListener('disconnect', e => {

  // Remove |e.target| from the UI. If the device was open the disconnection can

  // also be observed as a stream error.

  console.log("disconnected");

});


console.log(navigator.serial);


document.addEventListener('DOMContentLoaded', async () => {


    const connectButton = document.querySelector('#connect') as HTMLInputElement;


    if (connectButton) {

        connectButton.addEventListener('click', async () => {

            try {

        

                // Request Keiser Receiver from the user.

                const port = await navigator.serial.requestPort({

                    filters: [{ usbVendorId: 0x2341, usbProductId: not_required }]

                });

            

                try {

                    // Open and begin reading.

                    await port.open({ baudRate: 115200 });

                

                } catch (e) {

                    console.log(e);

                }

                while (port.readable) {

                  const reader = port.readable.getReader();


                  try {

                    while (true) {

                      const { value, done } = await reader.read();

                      if (done) {

                        // Allow the serial port to be closed later.

                        reader.releaseLock();

                        break;

                      }

                      if (value) {

                        console.log(value);

                      }

                    }

                  } catch (error) {

                    // TODO: Handle non-fatal read error.

                    console.log(error);

                  }

                }

            } catch (e) {

              console.log("Permission to access a device was denied implicitly or explicitly by the user.");

              console.log(e);

              console.log(port);

            }

        }

}

設(shè)備特定的供應(yīng)商和產(chǎn)品 ID 顯然會因設(shè)備而異。在上面的示例中,我插入了 Arduino 供應(yīng)商 ID。


它沒有回答如何讓 Chrome“忘記”的問題,但我不確定這在使用 SerialAPI 時是否相關(guān),因為需要手勢。


希望有更多經(jīng)驗的人能夠發(fā)布更豐富的答案。


查看完整回答
反對 回復(fù) 2023-10-14
  • 3 回答
  • 0 關(guān)注
  • 573 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號