国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
鑰匙要點(diǎn)
經(jīng)常詢問有關(guān)信標(biāo)API
var data = new formdata();
>我可以使用信標(biāo)API將數(shù)據(jù)發(fā)送到其他域嗎?但是,服務(wù)器必須支持CORS(交叉原始資源共享),并且必須配置以接受您的域中的交叉原始請(qǐng)求。
首頁 web前端 js教程 信標(biāo)API簡(jiǎn)介

信標(biāo)API簡(jiǎn)介

Feb 20, 2025 am 09:57 AM

信標(biāo)API簡(jiǎn)介

鑰匙要點(diǎn)

    Beacon API為Web開發(fā)人員提供了一個(gè)解決方案,以在當(dāng)前頁面卸載時(shí)將少量數(shù)據(jù)(例如分析或診斷)發(fā)送回服務(wù)器,從而解決了潛在的延遲或丟失有價(jià)值信息的問題。 ??> Beacon API由一種附加到Navigator對(duì)象的方法SendBeacon組成。它需要兩個(gè)參數(shù),即提交數(shù)據(jù)的URL以及要提交的數(shù)據(jù)。數(shù)據(jù)是通過HTTP POST請(qǐng)求提交的,可以作為arraybufferview,blob,domstring或formdata對(duì)象發(fā)送。
  • > Beacon API得到了Chrome,F(xiàn)irefox和Opera等主要桌面瀏覽器的支持,但在IE和Safari的最新版本中沒有支持。對(duì)于沒有支持的瀏覽器,開發(fā)人員可以使用功能檢測(cè)和后備到較舊的頁面上提交數(shù)據(jù)的方法。
  • Beacon API使Web開發(fā)人員可以輕松地將少量數(shù)據(jù)(例如分析或診斷數(shù)據(jù))發(fā)送回服務(wù)器時(shí),在當(dāng)前頁面卸載時(shí)會(huì)異步回到服務(wù)器。在本文中,我們將研究Beacon API解決的一些問題,并向您展示如何使用API??。
  • 沒有信標(biāo)API,當(dāng)用戶從頁面上導(dǎo)航時(shí),將數(shù)據(jù)發(fā)送回服務(wù)器可能比看起來更棘手。您不想將下一頁推遲加載,因?yàn)檫@會(huì)損害用戶對(duì)網(wǎng)站的體驗(yàn)。但是,您不想失去可能有助于改善您的網(wǎng)站的寶貴信息:發(fā)送數(shù)據(jù)過早可能意味著您會(huì)釋放
  • >
  • 可以捕獲的有價(jià)值的信息,如果您等待了更長的時(shí)間。 >
>典型的

解決方案

將分析數(shù)據(jù)發(fā)送到服務(wù)器,因?yàn)槲臋n卸載可能看起來像這樣:

>卸載事件處理程序,該處理程序通過AJAX請(qǐng)求提交數(shù)據(jù)。當(dāng)頁面卸載事件啟動(dòng)時(shí),數(shù)據(jù)將通過caureanalyticsdata函數(shù)捕獲,并通過AJAX請(qǐng)求發(fā)送到服務(wù)器。請(qǐng)注意Xhr.open的第三個(gè)參數(shù)是錯(cuò)誤的,表明AJAX請(qǐng)求為 synChronous

。瀏覽器通常會(huì)忽略卸載處理程序期間提出的異步請(qǐng)求,因此任何此類ajax請(qǐng)求

>都具有同步性。由于它是同步的,因此瀏覽器必須等待請(qǐng)求在>之前完成>它可以卸載文檔并顯示下一頁。等待的額外等待可能會(huì)導(dǎo)致表現(xiàn)不佳的感覺。

<span>window.addEventListener('unload', function(event) {
</span>  <span>var xhr = new XMLHttpRequest(),
</span>    data <span>= captureAnalyticsData(event);
</span>
  xhr<span>.open('post', '/log', false);
</span>  xhr<span>.send(data);
</span><span>});
</span>
<span>function captureAnalyticsData(event) {
</span>  <span>return 'sample data';
</span><span>}</span>
>使用的其他技術(shù)代替同步AJAX請(qǐng)求包括在卸載處理程序中設(shè)置圖像對(duì)象的SRC。瀏覽器將在卸載文檔之前等待圖像加載,在此期間可以將數(shù)據(jù)提交給服務(wù)器。但是,這仍然存在相同的問題:當(dāng)前文檔的卸載將在請(qǐng)求,這次完成圖像完成時(shí)延遲,這可能會(huì)導(dǎo)致性能差。

創(chuàng)建了Beacon API,以幫助解決這些問題。它定義了一個(gè)接口,該接口使開發(fā)人員可以將少量數(shù)據(jù)發(fā)送到Web服務(wù)器異步。它僅包含一種連接到導(dǎo)航對(duì)象的方法,即sendbeacon。 SendBeacon采用兩個(gè)參數(shù),您要提交數(shù)據(jù)的URL以及要提交的數(shù)據(jù):>

數(shù)據(jù)是通過HTTP POST請(qǐng)求提交的,可以作為arraybufferview,blob,domstring或formdata對(duì)象發(fā)送。瀏覽器將請(qǐng)求排隊(duì),并將其發(fā)送“最早的可用機(jī)會(huì),但與其他網(wǎng)絡(luò)流量相比,數(shù)據(jù)的傳輸更低?!?(根據(jù)W3C規(guī)格)。如果數(shù)據(jù)已成功提交到服務(wù)器,則SendBeacon將返回true,或者否則為false。
<span>window.addEventListener('unload', function(event) {
</span>  <span>var xhr = new XMLHttpRequest(),
</span>    data <span>= captureAnalyticsData(event);
</span>
  xhr<span>.open('post', '/log', false);
</span>  xhr<span>.send(data);
</span><span>});
</span>
<span>function captureAnalyticsData(event) {
</span>  <span>return 'sample data';
</span><span>}</span>
> Navigator.SendBeacon在主要桌面瀏覽器中都不錯(cuò)。您會(huì)發(fā)現(xiàn)它在當(dāng)前版本的Chrome,F(xiàn)irefox和Opera中得到了支持,但在IE和Safari的最新版本中不支持它。但是,您不能保證它的可用性,最好的選擇是使用功能檢測(cè)和后備到頁面上提交數(shù)據(jù)的舊方法之一:

>

>我創(chuàng)建了一個(gè)小示例應(yīng)用程序,您可以使用該應(yīng)用程序來查看Beacon API的作用。您需要安裝node.js來運(yùn)行服務(wù)器。運(yùn)行樣本:

<span>window.addEventListener('unload', function(event) {
</span>  <span>var data = captureAnalyticsData(event);
</span>  <span>navigator.sendBeacon('/log', data);
</span><span>});</span>

>下載并將zip文件解壓縮到您選擇的文件夾中,例如BeaConapi

    >打開終端并將目錄更改為您在步驟1中創(chuàng)建的文件夾,例如CD/PATH/TO/BEACONAPI
  1. 仍在終端中,輸入NPM安裝,然后按
  2. >
  3. 現(xiàn)在鍵入debug = beacconapi_demo ./bin/www and pers press
  4. >
  5. >打開一個(gè)支持信標(biāo)API并將其指向http:// localhost:3000
  6. >的瀏覽器
  7. 您應(yīng)該看到一個(gè)看起來像這樣的頁面:

在此示例中,我們使用的是Chrome。打開開發(fā)工具,切換到網(wǎng)絡(luò)選項(xiàng)卡,然后勾選“保存日志”復(fù)選框。過濾結(jié)果,以便您只看到其他請(qǐng)求?,F(xiàn)在,當(dāng)您單擊“卸載”按鈕時(shí),您應(yīng)該在Dev Tools中查看請(qǐng)求 /日志記錄。信標(biāo)API簡(jiǎn)介

結(jié)論信標(biāo)API簡(jiǎn)介

>本文介紹了信標(biāo)API。這是一個(gè)很小的API,但充滿了特定的利基市場(chǎng)。希望您能夠充分利用它。

經(jīng)常詢問有關(guān)信標(biāo)API

的問題(常見問題解答)

> Beacon API的主要功能是什么?>

>我如何在Web應(yīng)用程序中使用Beacon API?要在Web應(yīng)用程序中使用信標(biāo)API,可以使用Navigator.sendBeacon()方法。此方法需要兩個(gè)參數(shù):將數(shù)據(jù)發(fā)送到的URL以及發(fā)送的數(shù)據(jù)。數(shù)據(jù)可以是formdata對(duì)象,blob,arraybufferview或urlsearchparams對(duì)象。這是一個(gè)示例:

var data = new formdata();

data.append('name','john doe'); navigator.sendbeacon('/api/endpoint',data,data );

使用Beacon API?>

>使用BEACON API?信標(biāo)API的限制是,它沒有提供有關(guān)服務(wù)器成功收到數(shù)據(jù)的反饋。這意味著您不能將其用于需要確認(rèn)收據(jù)的關(guān)鍵數(shù)據(jù)。此外,所有瀏覽器中都不支持BEACON API,因此您可能需要為不支持它的瀏覽器提供后備。

>
> Beacon Api處理失敗如何?信標(biāo)API沒有提供有關(guān)服務(wù)器是否成功收到數(shù)據(jù)的任何反饋。如果由于網(wǎng)絡(luò)問題而無法發(fā)送數(shù)據(jù),則API不會(huì)重試發(fā)送數(shù)據(jù)。這就是為什么建議將信標(biāo)API用于不需要確認(rèn)收據(jù)的非關(guān)鍵數(shù)據(jù)的原因。

>我可以使用信標(biāo)API將數(shù)據(jù)發(fā)送到其他域嗎?但是,服務(wù)器必須支持CORS(交叉原始資源共享),并且必須配置以接受您的域中的交叉原始請(qǐng)求。

>是否在所有瀏覽器中支持的信標(biāo)API? Beacon API在大多數(shù)現(xiàn)代瀏覽器中都得到支持,包括Chrome,F(xiàn)irefox,Safari和Edge。但是,Internet Explorer不支持它。您可以在網(wǎng)站上檢查當(dāng)前的瀏覽器支持。例如分析數(shù)據(jù)。盡管您可以發(fā)送的數(shù)據(jù)量沒有嚴(yán)格的限制,但是發(fā)送大量數(shù)據(jù)可能會(huì)影響用戶網(wǎng)絡(luò)性能。因此,建議使用信標(biāo)API發(fā)送少量的非關(guān)鍵數(shù)據(jù)。

>

>我可以取消信標(biāo)的請(qǐng)求嗎?

不,一旦提出了信標(biāo)請(qǐng)求,就不能是取消。信標(biāo)API不提供取消或撤銷信標(biāo)請(qǐng)求的方法。這是建議將信標(biāo)API用于不需要確認(rèn)收據(jù)的非關(guān)鍵數(shù)據(jù)的另一個(gè)原因。

>

以上是信標(biāo)API簡(jiǎn)介的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用于不同的應(yīng)用場(chǎng)景。Java用于大型企業(yè)和移動(dòng)應(yīng)用開發(fā),而JavaScript主要用于網(wǎng)頁開發(fā)。

如何在JS中與日期和時(shí)間合作? 如何在JS中與日期和時(shí)間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時(shí)間處理需注意以下幾點(diǎn):1.創(chuàng)建Date對(duì)象有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時(shí)間信息可用get和set方法,注意月份從0開始;3.手動(dòng)格式化日期需拼接字符串,也可使用第三方庫;4.處理時(shí)區(qū)問題建議使用支持時(shí)區(qū)的庫,如Luxon。掌握這些要點(diǎn)能有效避免常見錯(cuò)誤。

為什么要將標(biāo)簽放在的底部? 為什么要將標(biāo)簽放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

什么是在DOM中冒泡和捕獲的事件? 什么是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個(gè)階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。1.事件捕獲通過addEventListener的useCapture參數(shù)設(shè)為true實(shí)現(xiàn);2.事件冒泡是默認(rèn)行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委托,提高動(dòng)態(tài)內(nèi)容處理效率;5.捕獲可用于提前攔截事件,如日志記錄或錯(cuò)誤處理。了解這兩個(gè)階段有助于精確控制JavaScript響應(yīng)用戶操作的時(shí)機(jī)和方式。

JavaScript:探索用于高效編碼的數(shù)據(jù)類型 JavaScript:探索用于高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

如何減少JavaScript應(yīng)用程序的有效載荷大??? 如何減少JavaScript應(yīng)用程序的有效載荷大小? Jun 26, 2025 am 12:54 AM

如果JavaScript應(yīng)用加載慢、性能差,問題往往出在payload太大,解決方法包括:1.使用代碼拆分(CodeSplitting),通過React.lazy()或構(gòu)建工具將大bundle拆分為多個(gè)小文件,按需加載以減少首次下載量;2.移除未使用的代碼(TreeShaking),利用ES6模塊機(jī)制清除“死代碼”,確保引入的庫支持該特性;3.壓縮和合并資源文件,啟用Gzip/Brotli和Terser壓縮JS,合理合并文件并優(yōu)化靜態(tài)資源;4.替換重型依賴,選用輕量級(jí)庫如day.js、fetch

JavaScript模塊上的確定JS綜述:ES模塊與COMPORJS JavaScript模塊上的確定JS綜述:ES模塊與COMPORJS Jul 02, 2025 am 01:28 AM

ES模塊和CommonJS的主要區(qū)別在于加載方式和使用場(chǎng)景。1.CommonJS是同步加載,適用于Node.js服務(wù)器端環(huán)境;2.ES模塊是異步加載,適用于瀏覽器等網(wǎng)絡(luò)環(huán)境;3.語法上,ES模塊使用import/export,且必須位于頂層作用域,而CommonJS使用require/module.exports,可在運(yùn)行時(shí)動(dòng)態(tài)調(diào)用;4.CommonJS廣泛用于舊版Node.js及依賴它的庫如Express,ES模塊則適用于現(xiàn)代前端框架和Node.jsv14 ;5.雖然可混合使用,但容易引發(fā)問題

See all articles