1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Chrome 86 新功能解讀

        共 2569字,需瀏覽 6分鐘

         ·

        2020-10-28 08:49

        文件系統(tǒng)可穩(wěn)定使用

        在之前,我們可以使用 元素去磁盤讀取文件,如果要保存更改,需要給標(biāo)簽增加一個download屬性,它會打開文件選擇器,然后保存文件,但是我們沒有辦法寫回剛剛保存的那個文件,這個流程復(fù)雜又繁瑣。

        現(xiàn)在,使用文件系統(tǒng)訪問 API,你可以調(diào)用 showOpenFilePicker(),會顯示一個文件選擇器,然后返回一個文件 picker,你可以用這個 picker 讀取文件。

        async?function?getFileHandle()?{
        ??const?opts?=?{
        ????types:?[
        ??????{
        ????????description:?'Text?Files',
        ????????accept:?{
        ??????????'text/plain':?['.txt',?'.text'],
        ??????????'text/html':?['.html',?'.htm']
        ????????}
        ??????}
        ????]
        ??};
        ??return?await?window.showOpenFilePicker(opts);
        }

        如果要將文件保存到磁盤,你可以使用之前獲得的 picker ,也可以調(diào)用 showSaveFilePicker() 獲得一個新的 picker

        async?function?saveFile(fileHandle)?{
        ??if?(!fileHandle)?{
        ????fileHandle?=?await?window.showSaveFilePicker();
        ??}
        ??const?writable?=?await?fileHandle.createWritable();
        ??await?writable.write(contents);
        ??await?writable.close();
        }

        寫入之前, Chrome 會檢查用戶是否已授予寫入權(quán)限,如果未授予寫入權(quán)限,則 Chrome 會首先提示用戶。

        調(diào)用 showDirectoryPicker() 將打開一個目錄,你可以獲取文件列表或在該目錄中創(chuàng)建新文件。這非常適合諸如IDE或與大量文件交互的媒體播放器之類的東西。當(dāng)然,在你寫入內(nèi)容之前,用戶必須授予寫入權(quán)限。

        試用:WebHID

        人機接口設(shè)備(Human interface devices)通常被稱為 HID,它們從人那里獲取輸入或者向人提供輸出。

        現(xiàn)在我們可以通過一些 JavaScript API 來訪問這些設(shè)備,借助 WebHID API 我們可以充分利用游戲手柄,包括所有按鈕,操縱桿,傳感器,觸發(fā)器,LED等。

        butOpenHID.addEventListener('click',?async?(e)?=>?{
        ??const?deviceFilter?=?{?vendorId:?0x0fd9?};
        ??const?opts?=?{?filters:?[deviceFilter]?};
        ??const?devices?=?await?navigator.hid.requestDevice(opts);
        ??myDevice?=?devices[0];
        ??await?myDevice.open();
        ??myDevice.addEventListener('inputreport',?handleInpRpt);
        });

        基于網(wǎng)絡(luò)的視頻聊天應(yīng)用,可以使用專用揚聲器中的電話按鈕來開始或結(jié)束通話、靜音等。

        當(dāng)然,像這樣強大的 API,只能在用戶允許的前提下使用。

        試用:多屏放置 API

        現(xiàn)在,我們可以用 window.screen() 來獲取一些屏幕的屬性:

        const?screen?=?window.screen;
        console.log(screen);
        //?{
        //???availHeight:?1612,
        //???availLeft:?0,
        //???availTop:?23,
        //???availWidth:?3008,
        //???colorDepth:?24,
        //???orientation:?{...},
        //???pixelDepth:?24,
        //???width:?3008
        //?}

        但是如果你有多個顯示器怎么辦?抱歉,它只會告訴你當(dāng)前屏幕的屬性。

        Multi-Screen Window Placement APIChrome 86 版本開始試用,它可以枚舉所有當(dāng)前計算機連接的屏幕,并且支持在指定窗口放置屏幕。在使用之前,要向用戶申請權(quán)限。

        async?function?getPermission()?{
        ??const?opt?=?{?name:?'window-placement'?};
        ??try?{
        ????const?perm?=?await?navigator.permissions.query(opt);
        ????return?perm.state?===?'granted';
        ??}?catch?{
        ????return?false;
        ??}
        }

        用戶授予權(quán)限后,調(diào)用 window.getScreens() 將返回一個使用 Screen 對象數(shù)組解析的 promise 。

        const?screens?=?await?window.getScreens();
        console.log(screens);
        //?[
        //???{id:?0,?internal:?false,?primary:?true,?left:?0,?...},
        //???{id:?1,?internal:?true,?primary:?false,?left:?3008,?...},
        //?]


        了解更多:https://www.youtube.com/watch?v=GNuG-5m4Ud0&feature=emb_logo




        推薦閱讀




        我的公眾號能帶來什么價值?(文末有送書規(guī)則,一定要看)

        每個前端工程師都應(yīng)該了解的圖片知識(長文建議收藏)

        為什么現(xiàn)在面試總是面試造火箭?

        瀏覽 109
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            中国国产黄色片 | 坐在他腰上h吃早餐1v1 | 他含着她胸前的乳1v1高h | 91秦在线观看 | 欧美精品性 | 欧美老妇精品一区二区 | 欧美女性爽爽 | 国产主播精品 | 欧美一级a一片 狠狠躁 狠狠躁 | 亚洲欧美日韩在线不卡 |