信標API簡介
鑰匙要點
- > Beacon API得到了Chrome,Firefox和Opera等主要桌面瀏覽器的支持,但在IE和Safari的最新版本中沒有支持。對於沒有支持的瀏覽器,開發人員可以使用功能檢測和後備到較舊的頁面上提交數據的方法。
-
Beacon API使Web開發人員可以輕鬆地將少量數據(例如分析或診斷數據)發送回服務器時,在當前頁面卸載時會異步回到服務器。在本文中,我們將研究Beacon API解決的一些問題,並向您展示如何使用API。 沒有信標API,當用戶從頁面上導航時,將數據發送回服務器可能比看起來更棘手。您不想將下一頁推遲加載,因為這會損害用戶對網站的體驗。但是,您不想失去可能有助於改善您的網站的寶貴信息:發送數據過早可能意味著您會釋放 - > 可以捕獲的有價值的信息,如果您等待了更長的時間。 >
解決方案
將分析數據發送到服務器,因為文檔卸載可能看起來像這樣:
>卸載事件處理程序,該處理程序通過AJAX請求提交數據。當頁面卸載事件啟動時,數據將通過caureanalyticsdata函數捕獲,並通過AJAX請求發送到服務器。請注意Xhr.open的第三個參數是錯誤的,表明AJAX請求為
>都具有同步性。由於它是同步的,因此瀏覽器必須等待請求在>之前完成>它可以卸載文檔並顯示下一頁。等待的額外等待可能會導致表現不佳的感覺。
<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>
創建了Beacon API,以幫助解決這些問題。它定義了一個接口,該接口使開發人員可以將少量數據發送到Web服務器異步。它僅包含一種連接到導航對象的方法,即sendbeacon。 SendBeacon採用兩個參數,您要提交數據的URL以及要提交的數據:
<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>
>
>我創建了一個小示例應用程序,您可以使用該應用程序來查看Beacon API的作用。您需要安裝node.js來運行服務器。運行樣本:
<span>window.addEventListener('unload', function(event) { </span> <span>var data = captureAnalyticsData(event); </span> <span>navigator.sendBeacon('/log', data); </span><span>});</span>
>下載並將zip文件解壓縮到您選擇的文件夾中,例如BeaConapi
- >打開終端並將目錄更改為您在步驟1中創建的文件夾,例如CD/PATH/TO/BEACONAPI
- 仍在終端中,輸入NPM安裝,然後按
- > 現在鍵入debug = beacconapi_demo ./bin/www and pers press
- > >打開一個支持信標API並將其指向http:// localhost:3000
- >的瀏覽器
- 您應該看到一個看起來像這樣的頁面:
在此示例中,我們使用的是Chrome。打開開發工具,切換到網絡選項卡,然後勾選“保存日誌”複選框。過濾結果,以便您只看到其他請求。現在,當您單擊“卸載”按鈕時,您應該在Dev Tools中查看請求 /日誌記錄。
結論
經常詢問有關信標API
的問題(常見問題解答)
> Beacon API的主要功能是什麼? >>我如何在Web應用程序中使用Beacon API?要在Web應用程序中使用信標API,可以使用Navigator.sendBeacon()方法。此方法需要兩個參數:將數據發送到的URL以及發送的數據。數據可以是formdata對象,blob,arraybufferview或urlsearchparams對象。這是一個示例:
var data = new formdata();
data.append('name','john doe'); navigator.sendbeacon('/api/endpoint', data,data );使用Beacon API? >
>使用BEACON API?信標API的限制是,它沒有提供有關服務器成功收到數據的反饋。這意味著您不能將其用於需要確認收據的關鍵數據。此外,所有瀏覽器中都不支持BEACON API,因此您可能需要為不支持它的瀏覽器提供後備。
>我如何在Web應用程序中使用Beacon API?要在Web應用程序中使用信標API,可以使用Navigator.sendBeacon()方法。此方法需要兩個參數:將數據發送到的URL以及發送的數據。數據可以是formdata對象,blob,arraybufferview或urlsearchparams對象。這是一個示例:
var data = new formdata();
data.append('name','john doe');>
> Beacon Api處理失敗如何?信標API沒有提供有關服務器是否成功收到數據的任何反饋。如果由於網絡問題而無法發送數據,則API不會重試發送數據。這就是為什麼建議將信標API用於不需要確認收據的非關鍵數據的原因。
>我可以使用信標API將數據發送到其他域嗎?但是,服務器必須支持CORS(交叉原始資源共享),並且必須配置以接受您的域中的交叉原始請求。
>是否在所有瀏覽器中支持的信標API? Beacon API在大多數現代瀏覽器中都得到支持,包括Chrome,Firefox,Safari和Edge。但是,Internet Explorer不支持它。您可以在網站上檢查當前的瀏覽器支持。例如分析數據。儘管您可以發送的數據量沒有嚴格的限制,但是發送大量數據可能會影響用戶網絡性能。因此,建議使用信標API發送少量的非關鍵數據。
>>我可以取消信標的請求嗎?
不,一旦提出了信標請求,就不能是取消。信標API不提供取消或撤銷信標請求的方法。這是建議將信標API用於不需要確認收據的非關鍵數據的另一個原因。 >
以上是信標API簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

探索前端中類似VSCode的面板拖拽調整功能的實現在前端開發中,如何實現類似於VSCode...
