整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          先睹為快即將到來的HTML6

          先睹為快即將到來的HTML6

          文由掘金@天行天忌授權發布,前端晚間課對其內容進行微改。


          HTML,超文本標記語言,是一種用于創建網頁的標準標記語言。自從引入 HTML 以來,它就一直用于構建互聯網。與 JavaScript 和 CSS 一起,HTML 構成前端開發的三劍客。

          盡管許多新技術使網站創建過程變得更簡單、更高效,但 HTML 始終是核心。隨著 HTML5 的普及,在 2014 年,這種標記語言發生了很多變化,變得更加友好,瀏覽器對新標準的支持熱度也越來越高。而HTML并不止于此,還在不斷發生變化,并且可能會獲得一些特性來證明對 HTML6 的命名更改是合理的。

          支持原生模式

          該元素<dialog> 將隨 HTML6 一起提供。它被認為等同于用 JavaScript 開發的模態,并且已經標準化,但只有少數瀏覽器完全支持。但這種現象會改變,很快它將在所有瀏覽器中得到支持。

          這個元素在其默認格式下,只會將光標顯示在它所在的位置上,但可以使用 JavaScript 打開模式。

          <dialog>
            <form method="dialog">
              <input type="submit" value="確定" />
              <input type="submit" value="取消" />
            </form>
          </dialog>

          在默認形式下,該元素創建一個灰色背景,其下方是非交互式內容。

          可以在 <dialog> 其中的表單上使用一種方法,該方法將發送值并將其傳遞回自身 <dialog>

          總的來說,這個標簽在用戶交互和改進的界面中變得有益。

          可以通過更改 <dialog> 標簽的 open 屬性以控制打開和關閉。

          <dialog open>
            <p>組件內容</p>
          </dialog>

          沒有 JavaScript 的單頁應用程序

          FutureClaw 雜志主編 Bobby Mozumder 建議:

          將錨元素鏈接到 JSON/XML、API 端點,讓瀏覽器在內部將數據加載到新的數據結構中,然后瀏覽器將 DOM 元素替換為根據需要加載的任何數據。初始數據(以及標準錯誤響應)可以放在標題裝置中,如果需要,可以稍后替換。

          據他介紹,這是單頁應用程序網頁設計模式,可以提高響應速度和加載時間,因為不需要加載 JavaScript。

          這個是一個比較有意思的提案,就有點類似我們以前沒有做前后端分離之前的混合編程的模式,HTML變成模板語言,通過JSON API請求數據,不一樣的是變成瀏覽器來默認解析,瀏覽器內部加載數據到新的數據結構中,然后瀏覽器將按需加載到的數據替換成 DOM 元素

          大家可以看一下InfoQ上的這篇文章《針對非正式 HTML6 提案“無需 JavaScript 的單頁應用”引發的論戰》,了解更多!

          https://www.infoq.cn/article/2015/03/html6-without-javascript


          自由調整圖像大小

          HTML6 愛好者相信即將到來的更新將允許瀏覽器調整圖像大小以獲得更好的觀看體驗。

          每個瀏覽器都難以呈現相對于設備和屏幕尺寸的最佳圖像尺寸,不幸的是,src 標簽 img 在處理這個問題時不是很有效。

          這個問題可以通過一個新標簽 <srcset> 來解決,它使瀏覽器在多個圖像之間進行選擇的工作變得更加容易。

          專用庫

          將可用庫引入 HTML6 絕對是提高開發效率的重要一步。

          微格式

          很多時候,需要在互聯網上定義一般信息,而這些一般信息可以是任何公開的信息,例如電話號碼、姓名、地址等。微格式是能夠定義一般數據的標準。微格式可以增強設計者的能力,并可以減少搜索引擎推斷公共信息所需的努力。

          自定義菜單

          盡管標簽<ul>、<ol>非常有用,但在某些情況下仍有一些不足之處。可以處理交互元素的標簽將是一個不錯的選擇。

          這就是創建標簽 <menu> 的驅動力,它可以處理按鈕驅動的列表元素。

          <menu type="toolbar">
            <li><button>個人信息</button></li>
            <li><button>系統設置</button></li>
            <li><button>賬號注銷</button></li>
          </menu>

          因此 <menu>,除了能夠像普通列表一樣運行之外,還可以增強 HTML 列表的功能。

          增強身份驗證

          雖然HTML5在安全性方面還不錯,瀏覽器和網絡技術也提供了合理的保護。毫無疑問,在身份驗證和安全領域還有很多事情可以做。如密鑰可以異地存儲;這將防止不受歡迎的人訪問并支持身份驗證。使用嵌入式密鑰而不是 cookie,使數字簽名更好等。

          集成攝像頭

          HTML6 允許以更好的方式使用設備上的相機和媒體。將能夠控制相機、它的效果、模式、全景圖像、HDR 和其他屬性。

          總結

          沒有什么是完美的,HTML 也不是完美的,所以 HTML 規范可以做很多事情來使它更好。應該對一些有用的規范進行標準化,以增強 HTML 的能力。小的變化已經開始推出。如增強藍牙支持、p2p 文件傳輸、惡意軟件保護、云存儲集成,下一個 HTML 版本可以考慮一下。


          者:劉小夕

          轉發鏈接:https://mp.weixin.qq.com/s/aEbqUt3zSnq8EjdBtkBcpw

          在PC端用.NET開發一個藍牙下載的程序。實現在PC上查找周圍的藍牙設備(主要是手機),并將PC上的文件通過藍牙傳輸到手機上。目前我采用的是OpenNETCF.Net.Bluetooth,能夠正常發現周圍的藍牙設備,手機也能夠正常進行藍牙連接并接收文件。

          代碼實現

          1、查找周圍藍牙設備

          BluetoothClient bc=new BluetoothClient();
                  BluetoothDeviceInfo[] bdi;
                  bdi=bc.DiscoverDevices(10);//查找周圍最多10個藍牙設備
                  if (bdi.Length==0)
                  {
                      this.ShowErrMsg("請確認您的藍牙已開啟!");
                      return;
                  }

          2、打開數據流

           #region OBEXOpenStream
              public bool OBEXOpenStream(string BTMAC)
              {
          
                  // serial port UUID
                  Guid spguid=OpenNETCF.Net.Bluetooth.BluetoothService.ObexObjectPush;
                  OpenNETCF.Net.BluetoothAddress btaddress=OpenNETCF.Net.BluetoothAddress.Parse(BTMAC);
                  client=new OpenNETCF.Net.Sockets.BluetoothClient();
          
                  // define endpoint
                  OpenNETCF.Net.BluetoothEndPoint endpoint=new OpenNETCF.Net.BluetoothEndPoint(btaddress, spguid);
          
                  try
                  {
                      //open socket
                      client.Connect(endpoint);
                  }
                  catch
                  {
                      //unable to connect (server not listening on spguid)
                      return false;
                  }
          
                  //connect socket
                  stream=client.GetStream();
                  return true;
              }
              #endregion

          3、配對連接

           private bool OBEXConnect()
              {
                  //send client request
                  byte[] ConnectPacket=new byte[7];
          
                  ConnectPacket[0]=0x80;      // Connect
                  ConnectPacket[1]=0x00;      // Packetlength Hi Byte
                  ConnectPacket[2]=0x07;      // Packetlength Lo Byte
                  ConnectPacket[3]=0x10;      // Obex v1
                  ConnectPacket[4]=0x00;      // no flags
                  ConnectPacket[5]=0x20;      // 8k max packet size Hi Byte
                  ConnectPacket[6]=0x00;      // 8k max packet size Lo Byte
          
                  stream.Write(ConnectPacket, 0, ConnectPacket.Length);
          
                  //listen for server response
                  byte[] ReceiveBufferA=new byte[3];
                  stream.Read(ReceiveBufferA, 0, 3);
          
                  if (ReceiveBufferA[0]==160) // 0xa0
                  {
          
                      //success, decode rest of packet
                      int plength=(0xff * ReceiveBufferA[1]) + ReceiveBufferA[2]; //length of packet is...
          
                      //listen for rest of packet
                      byte[] ReceiveBufferB=new byte[plength - 3];
                      stream.Read(ReceiveBufferB, 0, plength - 3);
          
                      int obver=ReceiveBufferB[0]; //server obex version (16=v1.0)
                      int cflags=ReceiveBufferB[1]; //connect flags
                      int maxpack=(0xff * ReceiveBufferB[2]) + ReceiveBufferB[3]; //max packet size
          
                      return true;
                  }
                  else
                  {
                      return false;
                  }
              }

          4、發送文本內容

            //send client request, start put
                                  string tName="BRT優惠卷.txt";
                                  string tType="";
                                  string tFileContent="優惠卷內容:" + this.txtContent.Text.Trim();
          
                                  int result=OBEXRequest("PUT", tName, tType, tFileContent);
                                  if (result==160)
                                  {
                                      SendSuccess=true;
                                  }

          完整代碼


          主站蜘蛛池模板: 国产爆乳无码一区二区麻豆| 国产一区二区三区国产精品| 国产精品区AV一区二区| 中文字幕在线一区二区三区| 成人免费一区二区三区| 午夜福利av无码一区二区 | 无码毛片一区二区三区视频免费播放 | 亚洲一区二区久久| 国产成人高清亚洲一区91| 久久精品国产一区二区| 亚洲AV香蕉一区区二区三区| 色视频综合无码一区二区三区| 久久无码人妻一区二区三区| 日韩十八禁一区二区久久| 亚洲熟妇成人精品一区| 日本不卡一区二区三区视频| 国产91精品一区二区麻豆亚洲| 人妻互换精品一区二区| 国产免费一区二区三区| 国产主播一区二区| 日韩人妻一区二区三区免费| 中文字幕精品无码一区二区| 亚洲Aⅴ无码一区二区二三区软件| 无码av免费毛片一区二区| 无码国产精品一区二区免费16| 一区二区乱子伦在线播放| 人妻无码一区二区三区四区| 一区二区三区在线视频播放| 在线精品日韩一区二区三区| 精品国产AV无码一区二区三区 | jizz免费一区二区三区| 国产91精品一区二区麻豆亚洲| 国产99精品一区二区三区免费| 视频一区二区在线播放| 一区二区三区国模大胆| 麻豆aⅴ精品无码一区二区| 国产精品一区在线麻豆| 一区二区三区四区无限乱码 | 奇米精品视频一区二区三区| 无码国产精品一区二区免费模式| 97久久精品无码一区二区|