Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
文由掘金@天行天忌授權(quán)發(fā)布,前端晚間課對其內(nèi)容進(jìn)行微改。
HTML,超文本標(biāo)記語言,是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。自從引入 HTML 以來,它就一直用于構(gòu)建互聯(lián)網(wǎng)。與 JavaScript 和 CSS 一起,HTML 構(gòu)成前端開發(fā)的三劍客。
盡管許多新技術(shù)使網(wǎng)站創(chuàng)建過程變得更簡單、更高效,但 HTML 始終是核心。隨著 HTML5 的普及,在 2014 年,這種標(biāo)記語言發(fā)生了很多變化,變得更加友好,瀏覽器對新標(biāo)準(zhǔn)的支持熱度也越來越高。而HTML并不止于此,還在不斷發(fā)生變化,并且可能會獲得一些特性來證明對 HTML6 的命名更改是合理的。
該元素<dialog> 將隨 HTML6 一起提供。它被認(rèn)為等同于用 JavaScript 開發(fā)的模態(tài),并且已經(jīng)標(biāo)準(zhǔn)化,但只有少數(shù)瀏覽器完全支持。但這種現(xiàn)象會改變,很快它將在所有瀏覽器中得到支持。
這個(gè)元素在其默認(rèn)格式下,只會將光標(biāo)顯示在它所在的位置上,但可以使用 JavaScript 打開模式。
<dialog>
<form method="dialog">
<input type="submit" value="確定" />
<input type="submit" value="取消" />
</form>
</dialog>
在默認(rèn)形式下,該元素創(chuàng)建一個(gè)灰色背景,其下方是非交互式內(nèi)容。
可以在 <dialog> 其中的表單上使用一種方法,該方法將發(fā)送值并將其傳遞回自身 <dialog>。
總的來說,這個(gè)標(biāo)簽在用戶交互和改進(jìn)的界面中變得有益。
可以通過更改 <dialog> 標(biāo)簽的 open 屬性以控制打開和關(guān)閉。
<dialog open>
<p>組件內(nèi)容</p>
</dialog>
FutureClaw 雜志主編 Bobby Mozumder 建議:
將錨元素鏈接到 JSON/XML、API 端點(diǎn),讓瀏覽器在內(nèi)部將數(shù)據(jù)加載到新的數(shù)據(jù)結(jié)構(gòu)中,然后瀏覽器將 DOM 元素替換為根據(jù)需要加載的任何數(shù)據(jù)。初始數(shù)據(jù)(以及標(biāo)準(zhǔn)錯(cuò)誤響應(yīng))可以放在標(biāo)題裝置中,如果需要,可以稍后替換。
據(jù)他介紹,這是單頁應(yīng)用程序網(wǎng)頁設(shè)計(jì)模式,可以提高響應(yīng)速度和加載時(shí)間,因?yàn)椴恍枰虞d JavaScript。
這個(gè)是一個(gè)比較有意思的提案,就有點(diǎn)類似我們以前沒有做前后端分離之前的混合編程的模式,HTML變成模板語言,通過JSON API請求數(shù)據(jù),不一樣的是變成瀏覽器來默認(rèn)解析,瀏覽器內(nèi)部加載數(shù)據(jù)到新的數(shù)據(jù)結(jié)構(gòu)中,然后瀏覽器將按需加載到的數(shù)據(jù)替換成 DOM 元素。
大家可以看一下InfoQ上的這篇文章《針對非正式 HTML6 提案“無需 JavaScript 的單頁應(yīng)用”引發(fā)的論戰(zhàn)》,了解更多!
https://www.infoq.cn/article/2015/03/html6-without-javascript
HTML6 愛好者相信即將到來的更新將允許瀏覽器調(diào)整圖像大小以獲得更好的觀看體驗(yàn)。
每個(gè)瀏覽器都難以呈現(xiàn)相對于設(shè)備和屏幕尺寸的最佳圖像尺寸,不幸的是,src 標(biāo)簽 img 在處理這個(gè)問題時(shí)不是很有效。
這個(gè)問題可以通過一個(gè)新標(biāo)簽 <srcset> 來解決,它使瀏覽器在多個(gè)圖像之間進(jìn)行選擇的工作變得更加容易。
將可用庫引入 HTML6 絕對是提高開發(fā)效率的重要一步。
很多時(shí)候,需要在互聯(lián)網(wǎng)上定義一般信息,而這些一般信息可以是任何公開的信息,例如電話號碼、姓名、地址等。微格式是能夠定義一般數(shù)據(jù)的標(biāo)準(zhǔn)。微格式可以增強(qiáng)設(shè)計(jì)者的能力,并可以減少搜索引擎推斷公共信息所需的努力。
盡管標(biāo)簽<ul>、<ol>非常有用,但在某些情況下仍有一些不足之處??梢蕴幚斫换ピ氐臉?biāo)簽將是一個(gè)不錯(cuò)的選擇。
這就是創(chuàng)建標(biāo)簽 <menu> 的驅(qū)動力,它可以處理按鈕驅(qū)動的列表元素。
<menu type="toolbar">
<li><button>個(gè)人信息</button></li>
<li><button>系統(tǒng)設(shè)置</button></li>
<li><button>賬號注銷</button></li>
</menu>
因此 <menu>,除了能夠像普通列表一樣運(yùn)行之外,還可以增強(qiáng) HTML 列表的功能。
雖然HTML5在安全性方面還不錯(cuò),瀏覽器和網(wǎng)絡(luò)技術(shù)也提供了合理的保護(hù)。毫無疑問,在身份驗(yàn)證和安全領(lǐng)域還有很多事情可以做。如密鑰可以異地存儲;這將防止不受歡迎的人訪問并支持身份驗(yàn)證。使用嵌入式密鑰而不是 cookie,使數(shù)字簽名更好等。
HTML6 允許以更好的方式使用設(shè)備上的相機(jī)和媒體。將能夠控制相機(jī)、它的效果、模式、全景圖像、HDR 和其他屬性。
沒有什么是完美的,HTML 也不是完美的,所以 HTML 規(guī)范可以做很多事情來使它更好。應(yīng)該對一些有用的規(guī)范進(jìn)行標(biāo)準(zhǔn)化,以增強(qiáng) HTML 的能力。小的變化已經(jīng)開始推出。如增強(qiáng)藍(lán)牙支持、p2p 文件傳輸、惡意軟件保護(hù)、云存儲集成,下一個(gè) HTML 版本可以考慮一下。
者:劉小夕
轉(zhuǎn)發(fā)鏈接:https://mp.weixin.qq.com/s/aEbqUt3zSnq8EjdBtkBcpw
在PC端用.NET開發(fā)一個(gè)藍(lán)牙下載的程序。實(shí)現(xiàn)在PC上查找周圍的藍(lán)牙設(shè)備(主要是手機(jī)),并將PC上的文件通過藍(lán)牙傳輸?shù)绞謾C(jī)上。目前我采用的是OpenNETCF.Net.Bluetooth,能夠正常發(fā)現(xiàn)周圍的藍(lán)牙設(shè)備,手機(jī)也能夠正常進(jìn)行藍(lán)牙連接并接收文件。
1、查找周圍藍(lán)牙設(shè)備
BluetoothClient bc=new BluetoothClient();
BluetoothDeviceInfo[] bdi;
bdi=bc.DiscoverDevices(10);//查找周圍最多10個(gè)藍(lán)牙設(shè)備
if (bdi.Length==0)
{
this.ShowErrMsg("請確認(rèn)您的藍(lán)牙已開啟!");
return;
}
2、打開數(shù)據(jù)流
#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、發(fā)送文本內(nèi)容
//send client request, start put
string tName="BRT優(yōu)惠卷.txt";
string tType="";
string tFileContent="優(yōu)惠卷內(nèi)容:" + this.txtContent.Text.Trim();
int result=OBEXRequest("PUT", tName, tType, tFileContent);
if (result==160)
{
SendSuccess=true;
}
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。