搜尋
首頁web前端H5教程詳解HTML5中的Communication API基本使用方法_html5教學技巧

1.跨文件訊息通訊
跨文件訊息通訊可以確保iframe、標籤頁、視窗間安全地進行跨來源通訊。它把postMessage API定義為傳送訊息的標準方式。利用postMessage傳送訊息非常簡單,程式碼如下所示:
chatFrame.contextWindow.postMessage('Hello,world','http://www.example.com');
接收訊息時僅需在頁面種增加一個事件處理函數。當某個訊息到達時,透過檢查訊息的來源來決定是否對此訊息進行處理。
訊息事件是一個擁有data(資料)和origin(來源)屬性的DOM事件。 data屬性是發送方傳遞的實際訊息,而origin屬性是發送來源。
postMessage API不僅可以勝任同源文件間的通信,而且在瀏覽器不允許非同源通信的情況下,postMessage API也很有用。鑑於它的一致性和易用性,在同源文檔間通訊時也建議使用postMessage。在JavaScript環境的通訊中始終應使用postMessage API,例如使用HTML5 Web Worker通訊時。
1.1 理解源安全
HTML5榮光引入源(origin)的概念對域安全進行了闡明和改進。來源是在網路上用來建立信任關係的位址的子集。來源由規則(scheme)、主機(host)、連接埠(post)組成。
源的概念中不考慮路徑。
HTML5定義了源的序列化。來源在API和協定中以字串的形式出現。
postMessage的安全規則確保了訊息不會被傳遞到非預期的來源頁面。當發送訊息時,由發送方制定接收方的來源。如果發送者用來呼叫postMessage的視窗不具有特定的來源(例如使用者跳到了其他網站),瀏覽器就不會傳送訊息。
類似地,接受訊息的時候,發送方的來源也被當作訊息的一部分。為避免偽造,訊息來源由瀏覽器提供。接收方可以決定處理哪些訊息,以及忽略哪些訊息。我們可以保留一份白名單,告訴瀏覽器僅僅處理可信來源的訊息。
最好永遠不要對來自第三方的字串求值。再者,要避免使用eval方法處理應用內部字串。可以透過window.JSON或json,.org解析器使用JSON。
1.2 跨文件訊息通訊的瀏覽器支援情況
常用的做法是偵測XMLHttpRequest物件中是否存在withCredentials屬性:
JavaScript Code複製內容到剪貼簿
  1.   var xhr = new > (typeof xhr.withCredentials === undefined) {    1.3 使用postMessage API
提示 HTML5定義的MessageEvent介面也是HTML5 WebSockets和HTML5 WebWorkers的一部分。 HTML5的通訊功能用來接受訊息的API與MessageEvent介面是一致的。其他通訊類API,如EventSource API和Web Workers,也都是使用MessageEvent介面來傳遞訊息。
1.4 使用postMessage API建立應用程式
傳送訊息
  透過呼叫目標頁window物件中的postMessage()函數可傳送訊息,程式碼如下:
   
JavaScript Code

複製內容到剪貼簿
window.postMessage(
    "Hello, world"
  1. >   第一個參數包括要傳送的數據,第二個參數是訊息傳送的目的地。要傳送訊息給iframe,可以再對應iframe的contentWindow中呼叫postMessage,程式碼如下:   JavaScript Code
複製內容到剪貼簿

document.getElementsByTagName("iframe"
)[0].contentWindow.postMessage(
  1. )[0].contentWindow.postMessage("Hello, >"cha");   監聽訊息事件
      接收訊息時僅需在頁面中增加一個事件處理函數。當某個訊息到達時,透過檢查訊息的來源來決定是否對此訊息進行處理。
      
    JavaScript Code複製內容到剪貼簿
    1. window.postMessage("Hello, world" >
    2.   訊息事件是一個擁有data(資料)和origin(來源)屬性的DOM事件。 data屬性是發送方傳遞的實際訊息,而origin屬性是發送來源。
      來源由規則(scheme)、主機(host)、連接埠(port)組成。
      例如:由於規則不同(如https與http),所以頁面與頁面的來源是不同的。
      源的概念中不考慮路徑。如:與只是路徑不同,他們是相同的源頭。
      來源在API和協定中以字串的形式出現。
      


    JavaScript Code
    複製內容到剪貼簿
      var
    1.  originWhiteList = ["porta"""]; function checkWhiteList(origin) {  checkWhiteList(origin) { var i=0; iif if if return true; } } return; } function messageHandler(e) { if if (>if (chn)2.數據); } else { //忽略未知來源的訊息 } } 
      postMessage API可以適用於同源和非同源通信,鑑於它的一致性,在同源文檔間通信時也推薦適用postMessage。
    2 XMLHttpRequest Level2
    作為XMLHttpRequest的改進版,XMLHttpRequest Level2在功能上有了很大的改進。主要集中在兩個方面:
    (1)跨源XMLHttpRequests;
    (2)進度事件(Progress events)

    2.1 跨源XMLHttpRequst
    Origin Resource Sharing,跨來源資源共享)實作了跨來源XMLHttpRequests。
    跨來源HTTP請求包含一個Origin頭部,拓為伺服器提供HTTP請求的來源資訊。頭部由瀏覽器保護,不能被應用程式程式碼修改。從本質上講,它與跨文件訊息通訊中訊息事件的origin屬性作用相同。
    CORS規範要求,對一些敏感行為-如申請證書的請求或除了GET和POST以外的OPTIONS預檢(preflight)請求,必須由瀏覽器發送給伺服器,以確定這種行為能否被支持和允許,這意味著成功通訊的背後或許需要由具備CORS出了能力的伺服器來支援。

    2.2 進度事件
    新版XMLHttpRequest中最重要的API改進之一是增加了對進度的回應。
    XMLHttpRequest Level2用了一個有意義的名字Progress進度來命名進度事件。

    3 進階功能
    3.1 結構化的資料
    早期版本的postMessage僅支援字串。後來的版本支援JavaScript物件、canvas imageData和檔案等其他資料類型。由於不同瀏覽器對規範支援的差異,對不同的物件類型的支援情況也不同。
    3.2 Framebusting
    Framebusting技術可以用來保證某些內容不會載入到jframe。應用程式首先偵測其所在的視窗是否為最外層的視窗(window.top),若不是則跳脫包含它的框架,程式碼如下所示:

    JavaScript Code
    複製內容到剪貼簿
    1. if(window!=window.top)   
    2. {   
    3. window.top.location=location;   
    4. }  
    3.3二進位資料
      支援新的二進位API(如Typed Array)的瀏覽器可以用XMLHttpRequest來傳送二進位資料。 Level 2規格支援呼叫send()方法傳送Blob和ArrayBuffer物件
      
    XML/HTML Code複製內容到剪貼簿
    1. var a = new Uint8Array([83,78Array([83,755,55, 0,9]); var xhr = new XMLHttpRequest(); x ", true); console.log(a); xhr.send(a.buffer);  
      XMLHttpRequest Level 2也會公開二進位回應資料。將responseType屬性值設定為text、document、arraybuffer或blob來控制 有response屬性傳回的物件類型。如果想要查看HTTP回應體包含的原始位元組,需要將responseTyper屬性值設為arraybuffer或blob。
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
HTML5特徵:H5的核心HTML5特徵:H5的核心May 04, 2025 am 12:05 AM

HTML5的核心特性包括語義化標籤、多媒體支持、表單增強和離線存儲與本地存儲。 1.語義化標籤如、等提高了代碼可讀性和SEO效果。 2.多媒體支持通過和標籤簡化了嵌入媒體內容的過程。 3.表單增強引入了新的輸入類型和驗證屬性,簡化了表單開發。 4.離線存儲和本地存儲通過ApplicationCache和localStorage等提高了網頁性能和用戶體驗。

H5:探索最新版本的HTMLH5:探索最新版本的HTMLMay 03, 2025 am 12:14 AM

html5isamajorrevisionofthehtmlStandardThatRevolutionsWebDevelopmentBybyIntroDucingNewSemanticeLementSemelementsandAndCapabilities.1)itenhancesCodereAdabilityAndSeowitability andSeowithelientsLike,and.2)

超越基礎:H5代碼中的高級技術超越基礎:H5代碼中的高級技術May 02, 2025 am 12:03 AM

H5的高級技巧包括:1.利用進行複雜圖形繪製,2.使用WebWorkers提升性能,3.通過WebStorage增強用戶體驗,4.實現響應式設計,5.利用WebRTC實現實時通信,6.進行性能優化和最佳實踐。這些技巧幫助開發者構建更動態、互動和高效的Web應用。

H5:網絡內容和設計的未來H5:網絡內容和設計的未來May 01, 2025 am 12:12 AM

H5(HTML5)將通過新元素和API提升網頁內容和設計。 1)H5增強了語義化標記和多媒體支持。 2)它引入了Canvas和SVG,豐富了網頁設計。 3)H5的工作原理是通過新標籤和API擴展HTML功能。 4)基本用法包括使用創建圖形,高級用法涉及WebStorageAPI。 5)開發者需注意瀏覽器兼容性和性能優化。

H5:網絡開發的新功能和功能H5:網絡開發的新功能和功能Apr 29, 2025 am 12:07 AM

H5帶來了多項新功能和能力,極大提升了網頁的互動性和開發效率。 1.語義化標籤如、增強了SEO。 2.多媒體支持通過和標籤簡化了音視頻播放。 3.Canvas繪圖提供了動態圖形繪製工具。 4.本地存儲通過localStorage和sessionStorage簡化了數據存儲。 5.地理位置API便於開發基於位置的服務。

H5:HTML5的關鍵改進H5:HTML5的關鍵改進Apr 28, 2025 am 12:26 AM

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。

HTML5:標準及其對Web開發的影響HTML5:標準及其對Web開發的影響Apr 27, 2025 am 12:12 AM

HTML5的核心特性包括語義化標籤、多媒體支持、離線存儲與本地存儲、表單增強。 1.語義化標籤如、等,提升代碼可讀性和SEO效果。 2.和標籤簡化多媒體嵌入。 3.離線存儲和本地存儲如ApplicationCache和LocalStorage,支持無網絡運行和數據存儲。 4.表單增強引入新輸入類型和驗證屬性,簡化處理和驗證。

H5代碼示例:實際應用和教程H5代碼示例:實際應用和教程Apr 25, 2025 am 12:10 AM

H5提供了多種新特性和功能,極大地增強了前端開發的能力。 1.多媒體支持:通過和元素嵌入媒體,無需插件。 2.畫布(Canvas):使用元素動態渲染2D圖形和動畫。 3.本地存儲:通過localStorage和sessionStorage實現數據持久化存儲,提升用戶體驗。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器