精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

你不知道的JavaScript APIs

開發(fā)
Web Share API 它可以讓我們訪問操作系統(tǒng)的本地共享機制,這對移動用戶特別有用。通過這個API,可以分享文本、鏈接和文件,而不需要創(chuàng)建自己的分享機制或使用第三方的機制。

最近,看到一些好用但不太常用的JS API,覺得挺不錯的,分享給大家。

  • Page Visibility API
  • Web Share API
  • Broadcast Channel API
  • Internationalization API

下面,我們來看下應該在哪里使用它們,以及如何使用它們。

Page Visibility API

這個APi 可以讓我們知道用戶何時離開了頁面。準確地說,只要頁面的可見性狀態(tài)發(fā)生變化,無論是用戶最小化、最大化窗口還是切換標簽,該API都會觸發(fā)一個事件 visibilitychange 。

在過去,我不得不使用一些黑科技來確認用戶是否切換了標簽或最小化了窗口。最流行的是使用blur和foucs瀏覽器事件。

window.addEventListener("focus", function () {
// User is back on the page
// Do Something
});

window.addEventListener("blur", function () {
// User left the page
// Do Something
});

上面的代碼可以工作,但不像預期的那樣。因為blur事件是在頁面失去焦點時觸發(fā)的,所以當用戶點擊搜索欄、警報對話框、控制臺或窗口邊框時,它就會被觸發(fā)。所以,blur和foucs只告訴我們頁面是否被激活,但不告訴我們頁面的內(nèi)容是否被隱藏或可見。

案例

一般來說,我們希望使用 Page Visibility API,在用戶沒有看到頁面時停止不必要的進程,或者執(zhí)行一些后臺操作。可以下面這幾種情況:

  • 當用戶離開頁面時,暫停視頻、輪播圖或動畫。
  • 停止一些實時獲取數(shù)據(jù)的API
  • 發(fā)送一些用戶信息

如何使用它?

Page Visibility API 有兩個屬性和一個事件來訪問頁面可見性狀態(tài)。

document.hidden它是全局可用的,而且是只讀的。盡量避免使用它,因為它現(xiàn)在已經(jīng)被廢棄了,但是當被訪問時,如果頁面是隱藏的,它將返回 true,如果是可見的,它將返回 false。

Document.visibilityState (只讀屬性)

返回document的可見性,即當前可見元素的上下文環(huán)境。由此可以知道當前文檔 (即為頁面) 是在背后,或是不可見的隱藏的標簽頁,或者 (正在) 預渲染。可用的值如下:

  • 'visible' : 此時頁面內(nèi)容至少是部分可見。即此頁面在前景標簽頁中,并且窗口沒有最小化。
  • 'hidden' : 此時頁面對用戶不可見。即文檔處于背景標簽頁或者窗口處于最小化狀態(tài),或者操作系統(tǒng)正處于 '鎖屏狀態(tài)'
  • 'prerender' : 頁面此時正在渲染中,因此是不可見的 (considered hidden for purposes of document.hidden). 文檔只能從此狀態(tài)開始,永遠不能從其他值變?yōu)榇藸顟B(tài)。

visibilitychange

當其選項卡的內(nèi)容變得可見或被隱藏時,會在文檔上觸發(fā) visibilitychange (能見度更改) 事件。

document.addEventListener("visibilitychange", () => {
if (document.visibilityState === "visible") {
// page is visible
} else {
// page is hidden
}
});

Web Share API

Web Share API 它可以讓我們訪問操作系統(tǒng)的本地共享機制,這對移動用戶特別有用。通過這個API,可以分享文本、鏈接和文件,而不需要創(chuàng)建自己的分享機制或使用第三方的機制。

使用案例

可以用它來分享網(wǎng)頁上的內(nèi)容到社交媒體上,或者把它復制到用戶的剪貼板上。

如何使用它?

網(wǎng)絡(luò)共享API給了我們兩個接口來訪問用戶的共享系統(tǒng)。

navigator.canShare(data);

如果對 Navigator.share() 的調(diào)用成功,則 Web Share API 的 Navigator.canShare() 方法將返回 true。data 包含要共享的數(shù)據(jù)的對象,該對象要與 Navigator.share() 方法傳遞的數(shù)據(jù)相匹配。

navigator.share(data)

Navigator.share() 方法通過調(diào)用本機的共享機制作為 Web Share API 的一部分。如果不支持 Web Share API,則此方法為 undefined。

data 包含要共享的數(shù)據(jù)的對象。必須至少指定以下字段之一。可用選項包括:

  • url: 要共享的 URL( USVString )
  • text: 要共享的文本( USVString )
  • title: 要共享的標題( USVString)
  • files: 要共享的文件(“FrozenArray”)

該方法將會返回一個 Promise。一旦用戶完成分享,這個 promise 將會接受。如果指定的共享數(shù)據(jù)格式不正確,promise 將會立即拒絕;如果用戶取消了分享,promise 也會拒絕。

事例

navigator.share({
title: document.title,
text: 'Hello World',
url: 'https://developer.mozilla.org',
}); // 分享 MDN 的 URL

Broadcast Channel API

Broadcast Channel API 可以實現(xiàn)同 源 下瀏覽器不同窗口,Tab 頁,frame 或者 iframe 下的 瀏覽器上下文 (通常是同一個網(wǎng)站下不同的頁面) 之間的簡單通訊。

const broadcast = new BroadcastChannel("new_channel");

BroadcastChannel 接口非常簡單。通過創(chuàng)建一個 BroadcastChannel 對象,一個客戶端就加入了某個指定的頻道。只需要向 構(gòu)造函數(shù) 傳入一個參數(shù):頻道名稱。如果這是首次連接到該廣播頻道,相應資源會自動被創(chuàng)建。

發(fā)送消息

現(xiàn)在發(fā)送消息就很簡單了,只需要調(diào)用 BroadcastChannel 對象上的 postMessage() 方法即可。該方法的參數(shù)可以是任意對象。最簡單的例子就是發(fā)送 DOMString 文本消息:

broadcast.postMessage("Example message");

不只是 DOMString,任意類型的對象都可以被發(fā)送。

斷開連接

通過調(diào)用 BroadcastChannel 對象的 close() 方法,可以離開頻道。這將斷開該對象和其關(guān)聯(lián)的頻道之間的聯(lián)系,并允許它被垃圾回收。

// 斷開頻道連接
bc.close()

Internationalization API

在開發(fā)一個網(wǎng)頁或應用程序時,需要將其內(nèi)容翻譯成其他語言以覆蓋更廣泛的受眾是非常常見的。然而,僅僅將你的網(wǎng)頁文本翻譯成你所需要的任何語言,并不足以使你的內(nèi)容對講該語言的人可用,因為像日期、數(shù)字、單位等東西在不同國家是不同的,可能會給你的用戶帶來混亂。

假設(shè)你想在你的網(wǎng)頁上顯示日期 "2022年11月8日",如 "11/8/22"。根據(jù)讀者的國家,這個數(shù)據(jù)可以用三種不同的方式來閱讀。

  • “November 8, 2022” 或者 MM/DD/YY 來自美國
  • “August 11, 2022” or DD/MM/YY 來自歐洲
  • “August 22, 2011” or YY/MM/DD 來自中國、日本。

這就是國際化API(或I18n API)來解決不同語言和地區(qū)的格式問題的地方。I18n API是一個了不起的工具,有多種用途,但這里不會深入研究,以免使本文過于冗長。

如何使用它?

I18n API 使用 locale 標識符來工作。locales 參數(shù)必須是一個 BCP 47 語言標記的字符串,或者是一個包括多個語言標記的數(shù)組。如果 locales 參數(shù)未提供或者是 undefined,便會使用運行時默認的 locale。

一個 BCP 47 語言標記代表了一種語言或者區(qū)域(兩者沒有很大的區(qū)別)。在其最常見的格式中,它以這樣的順序囊括了這些內(nèi)容:語言代碼,腳本代碼,和國家代碼,全部由連字符分隔開。例如:

  • "hi":印地語 (primary language)。
  • "de-AT": 在奧地利使用的德語 (primary language with country code)。
  • "zh-Hans-CN":在中國使用的簡體中文 (primary language with script and country codes)。

更準確地說,I18n API提供了一個Intl對象,它提供了精確的字符串對比、數(shù)字格式化,和日期時間格式化。Collator,NumberFormat 和 DateTimeFormat 對象的構(gòu)造函數(shù)是 Intl 對象的屬性。本頁文檔內(nèi)容包括了這些屬性,以及國際化使用的構(gòu)造器和其他語言的方法等常見的功能。

Intl.Collator

collators 的構(gòu)造函數(shù),用于啟用對語言敏感的字符串比較的對象。

Intl.DateTimeFormat

用于啟用語言敏感的日期和時間格式的對象的構(gòu)造函數(shù)。

Intl.ListFormat

啟用對語言敏感的列表格式化的對象的構(gòu)造函數(shù)。

Intl.NumberFormat

用于啟用語言敏感數(shù)字格式的對象的構(gòu)造函數(shù)。

Intl.PluralRules

用于啟用多種敏感格式和多種語言語言規(guī)則的對象的構(gòu)造函數(shù)。

Intl.RelativeTimeFormat

用于啟用語言敏感的相對時間格式化的對象的構(gòu)造函數(shù)。

在我們的例子中,我們重點關(guān)注 Intl.DateTimeFormat() 構(gòu)造函數(shù),以根據(jù)用戶的區(qū)域設(shè)置來格式化報價的 dateAdded 屬性。Intl.DateTimeFormat() 構(gòu)造函數(shù)需要兩個參數(shù):定義日期格式化慣例的 locale 字符串和用于自定義日期格式的 options 對象。

創(chuàng)建的 Intl.DateTimeFormat() 對象有一個 format() 方法,它需要兩個參數(shù):我們要格式化的Date對象和用于自定義如何顯示格式化日期的 options 對象。

const logDate = (locale) => {
const newDate = new Date("2022-10-24"); // YY/MM/DD
const dateTime = new Intl.DateTimeFormat(locale, {timeZone: "UTC"});
const formatedDate = dateTime.format(newDate);
console.log(formatedDate);
};

logDate("en-US"); // 10/24/2022
logDate("de-DE"); // 24.10.2022
logDate("zh-TW"); // 2022/10/24

dateTime.format() 根據(jù)當?shù)氐娜掌诟袷郊s定改變?nèi)掌凇N覀兛梢允褂胣avigator.language全局屬性在報價單的日期上實現(xiàn)這一行為,該全局屬性持有用戶的首選區(qū)域設(shè)置。為此,我們將創(chuàng)建一個新的函數(shù),接收一個日期字符串(YYYY-MM-DD格式),并根據(jù)用戶的locale返回格式化的日期。

const formatDate = (dateString) => {
const date = new Date(dateString);
const locale = navigator.language;
const dateTimeFormat = new Intl.DateTimeFormat(locale, {timeZone: "UTC"});

return dateTimeFormat.format(date);

};

代碼部署后可能存在的BUG沒法實時知道,事后為了解決這些BUG,花了大量的時間進行l(wèi)og 調(diào)試,這邊順便給大家推薦一個好用的BUG監(jiān)控工具 Fundebug。

原文:https://www.smashingmagazine.com/2022/09/javascript-api-guide/

責任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2024-05-15 18:59:01

JavaScript語言原型

2021-01-28 10:04:40

JavaScript開發(fā)技術(shù)

2023-07-07 14:47:46

JavaScript技巧

2009-12-10 09:37:43

2021-02-01 23:23:39

FiddlerCharlesWeb

2011-09-15 17:10:41

2010-08-23 09:56:09

Java性能監(jiān)控

2025-07-23 07:40:29

2020-05-09 08:48:21

JavaScript原生方法代碼

2017-03-13 10:35:10

JavaScript錯誤調(diào)用棧

2024-05-08 13:52:04

JavaScriptWeb應用程序

2022-11-04 08:19:18

gRPC框架項目

2020-09-15 08:35:57

TypeScript JavaScript類型

2021-10-17 13:10:56

函數(shù)TypeScript泛型

2021-12-29 11:38:59

JS前端沙箱

2021-12-22 09:08:39

JSON.stringJavaScript字符串

2015-06-19 13:54:49

2020-08-11 11:20:49

Linux命令使用技巧
點贊
收藏

51CTO技術(shù)棧公眾號

57pao国产成人免费| 色婷婷综合中文久久一本| 亚洲在线免费看| 日本视频www| 亚洲国产最新| 欧美日韩国产一区| wwwwww欧美| 免费在线黄色网址| 免费在线观看视频一区| 欧美巨乳美女视频| 免费看污片的网站| 日韩成人在线看| 日韩欧美成人免费视频| 99re8这里只有精品| 亚洲人视频在线观看| 麻豆91在线观看| 91国产精品视频在线| 天堂а√在线中文在线鲁大师| 都市激情亚洲| 欧美日韩国产a| www一区二区www免费| 3d玉蒲团在线观看| 国产日产亚洲精品系列| 国产91亚洲精品一区二区三区| 999视频在线| 亚洲国产清纯| 美女视频黄免费的亚洲男人天堂| 波多野结衣一本| 国产精伦一区二区三区| 制服.丝袜.亚洲.另类.中文 | 亚洲免费看黄网站| 精品日本一区二区三区| 国产wwwxxx| 美女一区二区三区| 欧洲亚洲免费在线| 日本一区二区三区免费视频| 亚洲精品成人影院| 中国日韩欧美久久久久久久久| 中国特级黄色大片| 亚洲精品黑牛一区二区三区| 91精品综合久久久久久| 国产男女无遮挡| 成人在线黄色电影| 亚洲国产视频网站| 国产中文字幕乱人伦在线观看| 成人短视频在线| 亚洲欧洲精品一区二区三区| 亚洲在线色站| 午夜激情在线观看| 国产精品的网站| 一区二区三区四区视频在线| av黄色在线观看| 国产精品免费人成网站| 亚洲精品人成| 欧美被日视频| 中文字幕日韩一区二区| 亚洲小视频在线播放| 国产不卡在线| 亚洲一区在线视频| www.射射射| 三妻四妾完整版在线观看电视剧| 精品国产91久久久| 乱妇乱女熟妇熟女网站| 成人欧美magnet| 色先锋资源久久综合| 国产免费视频传媒| 在线不卡一区| 日韩欧美成人一区| 日韩精品一区二区三区高清免费| 久久久久影视| 亚洲色无码播放| 亚洲第一福利在线观看| 毛片在线视频观看| 性爱视频在线播放| 亚洲国产精品一区二区久久| 国产97在线 | 亚洲| 欧美极度另类| 欧美日韩日本视频| 自拍视频第一页| 日韩成人午夜| 最近免费中文字幕视频2019| 欧美日韩色视频| 欧美区日韩区| 热草久综合在线| 一级黄色片免费| 国产精品综合一区二区三区| 好吊色欧美一区二区三区视频| 日本中文字幕一区二区有码在线| 日本一区二区三区国色天香| 国产大尺度在线观看| bbw在线视频| 欧美综合色免费| 中文字幕一二三区| 亚洲精品456| 久久成人一区二区| 一级成人黄色片| 久久99热狠狠色一区二区| 国产成人av一区二区三区| 五月婷中文字幕| 国产精品天干天干在观线 | 波多野结衣欲乱| 免费成人结看片| 久久久av一区| 一二三区免费视频| 国产一区二区导航在线播放| 久久人人97超碰人人澡爱香蕉| 毛片在线看网站| 欧美性感美女h网站在线观看免费| 中文字幕视频三区| 猛男gaygay欧美视频| 欧美国产日韩免费| 中文字幕人妻精品一区| 99久久99久久免费精品蜜臀| 一区中文字幕在线观看| xx欧美xxx| 亚洲大胆人体在线| 性色av无码久久一区二区三区| 久久一区视频| 91免费版网站在线观看| 91青青在线视频| 色噜噜狠狠一区二区三区果冻| 中国特级黄色大片| 欧美人与禽猛交乱配视频| 国产欧美日韩综合精品| 黄色软件在线| 欧美性感美女h网站在线观看免费 欧美性xxxx在线播放 | 最近中文字幕无免费| 性欧美18一19sex性欧美| 日韩一二三区不卡| 女人裸体性做爰全过| 欧美亚洲一区| 国产精品综合久久久久久| 国产乱色在线观看| 在线免费观看日本欧美| 中文精品在线观看| 中文亚洲字幕| 好看的日韩精品| 蜜桃麻豆av在线| 亚洲国产精品成人av| 久热精品在线观看| 国产精品自拍三区| 黑人巨大国产9丨视频| 婷婷激情成人| 久久久精品国产| 97人妻精品一区二区三区软件| 国产精品情趣视频| 九九热免费精品视频| 成人在线国产| 国产剧情日韩欧美| bbbbbbbbbbb在线视频| 欧美影视一区在线| 天天操天天干天天操天天干| 免费一级欧美片在线观看| 五月天色一区| 97成人超碰| 久久精品国产精品亚洲| 国产精品吴梦梦| 国产男人搡女人免费视频| 久久老女人爱爱| 免费在线观看的毛片| 精品免费视频| 国产精品夜间视频香蕉| a视频在线播放| 精品国产一区a| 日韩久久精品视频| 久久久久久久精| 搡女人真爽免费午夜网站| 日韩大片在线播放| 亚洲自拍中文字幕| а√天堂资源官网在线资源| 国产婷婷色综合av蜜臀av| 一级特黄免费视频| 亚洲欧洲精品一区二区三区| 麻豆tv在线观看| 久久福利精品| 一区二区三区av| 国产成人在线中文字幕| 日本韩国欧美精品大片卡二| 午夜视频在线| 精品国产欧美一区二区| 中文字幕日韩免费| 亚洲六月丁香色婷婷综合久久| 国产精品果冻传媒| 美日韩精品视频| 免费观看黄色的网站| 黑色丝袜福利片av久久| 国产精品爱久久久久久久| 国产黄色小视频在线| 日韩成人在线视频| 91精东传媒理伦片在线观看| 亚洲综合成人在线| 91l九色lporny| 国产精品综合一区二区三区| www黄色在线| 欧美成人日本| 日韩免费一区二区三区| 日韩综合一区二区三区| 国产999精品久久久| 综合久久2o19| 一本色道久久综合狠狠躁篇的优点 | 欧美a在线看| 日韩av影院在线观看| 91久久精品国产91性色69| 欧美日韩中文字幕综合视频| 国产日产精品一区二区三区的介绍| 9人人澡人人爽人人精品| 日本中文字幕影院| 午夜一级在线看亚洲| 8x8x8国产精品| www.美色吧.com| 麻豆久久一区二区| 人妻精品无码一区二区三区| 亚洲女同一区| 亚洲一一在线| 国产区精品区| 久久精品ww人人做人人爽| 视频国产精品| 成人国产精品色哟哟| 欧美美女日韩| 91国产视频在线| 性欧美video高清bbw| 日韩视频免费在线观看| 你懂得在线网址| 亚洲精品电影久久久| 亚洲av永久无码国产精品久久 | 国产免费播放一区二区| 激情小说综合网| 亚洲精品观看| 91gao视频| 久久精品免视看国产成人| 国产欧美精品一区二区| 高清在线一区| 国产精品对白刺激| 亚洲天堂一区二区| 日本视频久久久| 欧美三级网址| 日本久久久久久久| 欧美粗大gay| 日本亚洲欧洲色α| 伊人久久国产| 日本国产高清不卡| 精品成人av| 国产精品久久久久久久久久三级| 男人皇宫亚洲男人2020| 日本欧美爱爱爱| 草莓视频成人appios| 国产成+人+综合+亚洲欧洲| 亚洲妇女成熟| 国产不卡在线观看| 国产91欧美| 9色国产精品| 欧美在线视频一区二区三区| 亚洲宅男一区| 日日噜噜噜噜夜夜爽亚洲精品| 精品欧美久久| 亚洲午夜精品久久| 91精品国产自产在线观看永久∴ | 毛片av在线| 久久躁日日躁aaaaxxxx| 成码无人av片在线观看网站| 精品少妇一区二区30p| 高潮毛片无遮挡| 黑人一区二区| 55夜色66夜色国产精品视频| 成人直播视频| 国产精品女主播视频| 亚洲伦理网站| 国产精品一区二区免费| 亚洲丝袜美腿一区| 亚洲一区二区三区乱码| 欧美.日韩.国产.一区.二区| 久久艹国产精品| 久久久综合网| 91精产国品一二三产区别沈先生| 国产精品亚洲一区二区三区在线| 性活交片大全免费看| 337p粉嫩大胆色噜噜噜噜亚洲| 国产一区二区三区四区五区六区| 国产精品伦理一区二区| 538精品在线视频| 第一福利永久视频精品| 亚洲成人第一网站| 欧美另类高清zo欧美| 黄色小视频免费在线观看| 亚洲奶大毛多的老太婆| 国产精品久久麻豆| 久久男人资源视频| 日韩国产网站| 99久久伊人精品影院| 国产一区二区三区四区二区| 亚洲天堂av免费在线观看| 99riav国产精品| 日韩成人av免费| 99精品视频中文字幕| 四虎永久免费地址| 精品久久久久久久大神国产| 一级aaaa毛片| 日韩麻豆第一页| 成人在线视频亚洲| 日韩av手机在线看| 亚洲成人黄色| 一区二区三区观看| 夜夜精品视频| 国产精品久久久久野外| 久久青草欧美一区二区三区| 日韩一区二区三区四区在线| 在线国产亚洲欧美| 国产精品国模大尺度私拍| 日韩精品免费观看视频| 亚洲最大福利视频网| 不卡一区2区| 自拍日韩亚洲一区在线| 国产综合成人久久大片91| 波多野结衣 在线| 亚洲一区二区三区四区中文字幕| 中文字幕乱码人妻二区三区| 日韩成人在线视频| 国产偷倩在线播放| 91色琪琪电影亚洲精品久久| 欧美午夜精彩| 久草青青在线观看| 波波电影院一区二区三区| 丁香花五月激情| 欧美日本一区二区三区四区| 可以在线观看的黄色| 91成人国产在线观看| 国产精品99久久免费观看| 国产精品av免费| 精彩视频一区二区| www成人啪啪18软件| 色av一区二区| 你懂的在线网址| 2019中文字幕在线免费观看| 国产suv精品一区| 男人天堂av片| 成人性生交大合| 国产一级淫片a| 精品国内二区三区| 欧美四级在线| 高清视频在线观看一区| 亚洲图片在线| 久久性爱视频网站| 午夜婷婷国产麻豆精品| 欧美 日韩 国产 在线| 欧美国产第一页| 高清精品视频| 免费无码不卡视频在线观看| 97久久精品人人澡人人爽| 日韩欧美亚洲视频| 亚洲精品v欧美精品v日韩精品| 成人观看网址| 蜜桃视频成人| 日日夜夜一区二区| 高清国产在线观看| 欧美日韩亚洲高清一区二区| 日韩精品成人av| 亚洲aⅴ男人的天堂在线观看| 综合天天久久| 亚洲色图欧美日韩| 欧美日韩亚洲成人| 狠狠色伊人亚洲综合网站l| 国产精品7m视频| 999久久久91| 欧美性猛交xx| 欧美日韩免费网站| 麻豆导航在线观看| 国产综合在线观看视频| 亚洲精品一区二区在线看| 精品人妻一区二区三区免费| 亚洲成人免费视| 每日更新av在线播放| 国产中文字幕亚洲| 精品成人国产| 午夜在线观看一区| 日韩欧美专区| 日韩视频在线播放| 秋霞午夜av一区二区三区| 黄色片子在线观看| 亚洲国产精品人人爽夜夜爽| 国产欧美一区二区三区精品酒店| 亚洲一区二区三区乱码| 处破女av一区二区| 久久久蜜桃一区二区| 另类专区欧美制服同性| 久久国产精品色av免费看| 国产又猛又黄的视频| 亚洲欧美国产高清| 久久久资源网| av成人在线电影| 丝袜国产日韩另类美女| 天天看天天摸天天操| 精品视频—区二区三区免费| 六九午夜精品视频| 日日碰狠狠添天天爽超碰97| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 日本一二三区不卡| 日韩中文理论片| 欧美网色网址| 欧美一区二区三区影院| 在线观看三级视频欧美|