HTML5_06之拖放API、Worker線程、Storage存儲

来源:http://www.cnblogs.com/Jupiter258/archive/2016/11/14/6063350.html
-Advertisement-
Play Games

1、拖放API中源對象與目標對象事件間的數據傳遞: ①創建全局變數——污染全局對象: var 全局變數=null; src.ondragstart=function(){ 全局變數=數據值; } target.ondrop=function(){ console.log(全局變數); } ②使用HT ...


1、拖放API中源對象與目標對象事件間的數據傳遞:
 ①創建全局變數——污染全局對象:
  var 全局變數=null;
  src.ondragstart=function(){
   全局變數=數據值;
  }
  target.ondrop=function(){
   console.log(全局變數);
  }
 ②使用HTML5中拖放API提供的dataTransfer對象:
  源對象事件的dataTransfer與目標對象事件的dataTransfer不是同一個對象,但可相互傳遞數據;
  src.ondragstart=function(e){
   e.dataTransfer.setData('key','value');
  }
  target.ondrop=function(e){
   //讀取數據傳遞對象中得到的數據
   var data=e.dataTransfer.getData('key');
  }
  HTML5標準中dataTransfer對象可以保存的數據必須有key,key只能叫“text/html”或“text/uri-list”或“Files”;
2、拖放客戶端本地圖片到網頁中顯示:
 客戶端圖片文件為拖放源對象,網頁中的元素是拖放目標對象;
 container.ondrop=function(e){
  var f0=e.dataTransfer.files[0];//File對象
  var fr=new FileReader();//讀取文件中的內容
  fr.readAsDataURL(0);//把圖片作為dataURL來讀取
  fr.onload=function(){//文件讀取完成
   var img=new Image();//創建Image元素
   img.src=fr.result;//dataURL
   container.appendChild(img);
  }
 }
 HTML5中新增文件讀取相關對象:
  File——代表一個文件;FileList——代表一個文件列表;FileReader——用於讀取一個文件中的內容;FileWriter——用於向一個文件中寫出內容;
3、HTML5新特性——Web Worker:
 ①由於負責渲染/監聽的只有一個UI主線程,所有HTML/CSS/JS的執行都在這一個線程內,若頁面載入了非常耗時(演算法複雜)的JS操作,會阻塞後續的HTMl/CSS/JS渲染和事件監聽,所以需要一個類似於創建新線程地方法(JS沒有創建新線程的方法):
  var w=new Work('xx.js');
 在當前UI主線程中創建並啟動一個新的併發的工作線程該線程耗時操作,可能阻塞,但不會影響UI主線程;
 ②Worker線程的致命問題:不能執行任何DOM操作,不能使用任何DOM或BOM元素——瀏覽器只允許UI主線程修改DOM樹;
 ③讓UI主線程給Worker線程傳遞數據:
  UI主線程:
   var w=new Work('xx.js');
   w.postMessage('data');
  Worker線程:
   onmessage=function(event){
    var data=event.data;
   }
 ④讓Worker線程把運算結果傳遞給UI主線程:
  Worker線程:
   postMessage('data');
  UI主線程:
   var w=new Worker('xx.js');
   w.onmessage=function(event){
    var data=event.data;
   }
 ⑤Worker用於執行耗時的JS任務,在一個獨立的線程中,可以避免UI主線程的阻塞問題;
4、HTML5新特性——WebStorage:
 ①Web客戶端存儲技術:
  Cookie:相容性好,但操作繁瑣,數據長度限制(4KB);
  Flash:大小沒有限制,但依賴於Flash環境;
  Web Storage:大小可達8MB,操作簡單,但屬於HTML5新特性;
  IndexeedDB:大小沒有限制,使用JS操作的一種客戶端資料庫,但操作稍顯複雜;
 ②Web Storage新對象之window.sessionStorage:
  會話級存儲,其中的數據可以在一次會話中的多個頁面中共用——數據存儲在瀏覽器進程記憶體中;
  sessionStorage.setItem(key,value);
  var value=sessionStorage.getItem(key);
  sessionStorage.removeItem(key);
  sessionStorage.clear();
  sessionStorage.key(i);
  sessionStorage.length;
 ③Web Storage新對象之window.localStorage:
  跨會話級存儲(本地存儲),其中數據即使再關閉瀏覽器/電腦,下次仍可以訪問——數據存儲在文件系統的磁碟文件中;
  localStorage.setItem(key,value);
  var value=localStorage.getItem(key);
  localStorage.removeItem(key);
  localStorage.clear();
  localStorage.key(i);
  localStorage.length;
 ④如果localStorage中的數據發生了改變,所有已打開的當前網站的瀏覽器視窗,都會觸發window.onstorage事件,從而得到本地存儲數據已被修改;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • QThread Qt Gui frozen 未響應 阻塞 processEvents ...
  • 程式開發中,經常遇到一條記錄有多個狀態位,比如一條商品,他屬於熱門,新品,特賣。我們的資料庫如何設計呢? 一般有幾種方法 (1)建立關聯表 關聯表欄位:關係Id,商品Id,屬性Id 查詢:使用關聯表的方式,查詢某屬性的商品。 程式:寫入時,寫商品表和關聯表; (2)將多個屬性存在一個欄位中,用|分割 ...
  • 最近看到有部分招聘信息,要求應聘者說一下分散式系統架構的思路。今天早晨正好有些時間,我也把我們實際在.net方面網站架構的演化路線整理一下,只是我自己的一些想法,歡迎大家批評指正。 首先說明的是.net下開源內容較少,並且也不是做並行資料庫等基礎服務,因此在這裡什麼Hadoop、Spark、ZooK ...
  • StatementHandler 語句處理器,主要負責語句的創建、參數的設置、語句的執行。不負責結果集的處理。 BaseStatementHandler 實現公共部分,具體差異通過抽象方法,留給子類實現。 首先語句級別的配置,其次配置文件中的配置。 首先語句級別的配置,其次配置文件中的配置。 Sta ...
  • Web前端技術的發展使得MVVM模式相比WPF時代更加流行,然而老舊的WinForms仍然占據桌面開發技術很大一部分,現在SOD框架提供了WinForms MVVM支持,老壇泡新菜,讓WinForms煥發新春。 ...
  • 數據存儲重要性: 數據是企業最重要的財產; 數據可靠性是企業的命根,一定要保證。 單機存儲原理: 存儲引擎:存儲系統的發動機,它決定存儲系統的功能和性能; 引擎類型:哈希存儲引擎、B樹存儲引擎、LSM存儲引擎 哈希存儲引擎:基於哈希表結構 :數組+鏈表;支持Create\Update\Delete\... ...
  • nginx是什麼? nginx是一個強大的web伺服器軟體,用於處理高併發的http請求和作為反向代理伺服器做負載均衡。具有高性能、輕量級、記憶體消耗少,強大的負載均衡能力等優勢。 nginx架構? 如上官方示意圖所示,nginx啟動以後,會在系統中以daemon的方式在後臺運行,其中包括一個mast ...
  • Bootstrap學習筆記系列3-------Bootstrap簡單表單顯示 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...