麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

js高級程序設(shè)計筆記11--HTML5腳本編程

2024-04-27 15:17:30
字體:
供稿:網(wǎng)友

跨文檔消息傳遞

指的是來自不同域的頁面間傳遞消息。 postMessage():2個參數(shù),一條消息和一個表示消息接收方來自哪個域的字符串。第二個參數(shù)是保障通信安全。

var iframeWindow = document.getElementById('myframe').contentWindow;iframeWindow.postMessage("a secret","http://www.wrox.com");//向內(nèi)嵌框架發(fā)送一條消息

如果框架中的文檔不是來源于指定的域則postMessage()什么也不做。接收到XDM消息時,會觸發(fā)window對象的message事件。傳遞給onmessage處理程序的事件對象有3個屬性: 1. data:postMessage()的第一個參數(shù),即發(fā)送的消息。 2. origin:發(fā)送消息的文檔所在的域。 3. source:發(fā)送消息的文檔的window對象的代理。不能通過此對象訪問window對象的其他任何信息。

EventUitl.addHandler(window,"message",function(event)){ if(event.origin == "http://www.wrox.com"){ PRocessMessage(event.data); event.source.postMessage("received","http://p2p.wrox.com"); }}

原生拖放

拖放事件

拖動某元素時,將依次觸發(fā)下列事件: 1. dragstart 2. drag 3. dragend 當某個元素被拖動到一個有效的放置目標上時,下列事件會依次發(fā)生: 1. dragenter 2. dragover 3. dragleave或drop

自定義放置目標

可以把任何元素變成有效的放置目標。方法是重寫dragenter和dragover事件的默認行為。

EventUitl.addHandler(droptarget,"dragover",function(event)){ EventUtil.preventDefault(event);}EventUitl.addHandler(droptarget,"dragenter",function(event)){ EventUtil.preventDefault(event);}

Firefox3.5+中,放置事件的默認行為是打開被放到放置目標上的URL。因此如果是把文本拖放到放置目標上,則會導致無效URL錯誤。因此要取消drop事件的默認行為。阻止它打開URL。

EventUitl.addHandler(droptarget,"drop",function(event)){ EventUtil.preventDefault(event);}

dataTransfer對象

它是事件對象的一個屬性,用于從被拖動元素向放置目標傳遞字符串格式的數(shù)據(jù)。 有兩個主要方法: getData():傳入一個參數(shù),表示要保存的數(shù)據(jù)類型。IE只定義了“text”和”URL“兩種有效的數(shù)據(jù)類型。HTML5則允許各種MIME類型。 setData():2個參數(shù),第一個參數(shù)為

event.dataTransfer.setData("text","some text");var text = event.dataTransfer.getData("text");event.dataTransfer.setData("URL","http://www.wrox.com");var url = event.dataTransfer.getData("URL");

在拖動元素時瀏覽器會自動調(diào)用setData()方法把對應的數(shù)據(jù)保存在dataTransfer對象中,這些元素被放置在目標上時就可以通過getData()方法讀到這些數(shù)據(jù)。 注:Firefox在其第5個版本之前不能正確的將“url”和”text”映射為”text/uri-list”和“text/plain”,但能把”Text”映射為”text/plain”。

var url = dataTransfer.getData("url") || dataTransfer.getData("text/uri-list");var text = dataTransfer.getData("Text");

dropEffect與effectAllowed

dataTransfer對象還有兩個屬性:dropEffect與effectAllowed。 dropEffect可以知道被拖動的元素能夠執(zhí)行哪種放置行為。有以下取值:

“none”:不能把拖動的元素放在這里。這是除文本框之外所有元素的默認值。 “move”:應該把拖動的元素移動到放置目標。 “copy”:應該把拖動的元素復制到放置目標。 “l(fā)ink”:表示放置目標會打開拖動的元素。

要使用dropEffect屬性,必須在ondragenter事件中針對放置目標來設(shè)置他。并且它只有搭配effectAllowed屬性才有用。 effectAllowed屬性表示允許拖動元素的哪種dropEffect。取值:

uninitialized:沒有給拖動元素設(shè)置任何放置行為。 none:被拖動的元素不能有任何的行為。 copy:只允許值為copy的dropEffect. link:只允許值為link的dropEffect. move:只允許值為move的dropEffect. copyLink: copyMove: linkMove: all:允許任何dropEffect.

必須在ondragstart事件中設(shè)置effectAllowed屬性。

可拖動

默認情況下,圖像,鏈接和文本都是可以拖動的。文本只有在選中的情況下才可以被拖動。HTML5為所有元素規(guī)定了一個draggable屬性。設(shè)置這個屬性可以改變元素的可拖動屬性。

//讓圖像不能被拖動<img src="smile.gif" draggable="false">//讓這個元素可以拖動<div draggable="true">...</div>

另外為了讓Firefox支持可拖動屬性,必須添加一個ondragstart事件處理程序。并在dataTransfer對象總保存一些信息。

dataTransfer還有一個setDragImage(element,x,y)方法:指定一幅圖像,當拖動發(fā)生時,顯示在光標下方。參數(shù)分別為:Hmtl元素和光標在圖像中的x,y坐標。

媒體元素

HTML5新增了兩個標簽和

<video src="conference.mpg" id="muvideo">video palyer not available</video><audio src="song.mp3" id="myAudio">audio player not available</audio>

還可以指定widht和height屬性指定視頻播放器大小。poster屬性指定圖像的URI可以在加載視頻內(nèi)容期間顯示一幅圖像。controls屬性瀏覽器會顯示UI控件。 并非所有瀏覽器都支持所有媒體格式。所以可以指定多個不通的媒體來源。

<video id="myvideo"> <source src="conference.webm" type="video/webm;codecs='vp8,vorbis> <source src="conference.ogv" type="video/ogg;codecs='theora,vorbis> <source src="conference.mpg">video palyer not available</video>

屬性(自行查閱)

事件 (自行查閱)

自定義媒體播放器

使用和元素的play()和pause()方法,可以手工控制媒體文件的播放。組合使用屬性,事件就可以創(chuàng)建自定義的媒體播放器。

<div class="mediaplayer"> <div class="video"> <video id="palyer" src="movie.mov" poster="mymovie.jpg" width="200" height="200"> video player not available </video> </div> <div class="controls"> <input type="button" value="play" id="video-btn"> <span id="curtime">0</span><span id="duration">0</span> </div></div>//js代碼var player = document.getElementById("player"), btn = document.getElementById("btn"), curtime = document.getElementById("curtime"), duration = document.getElementById("duration");//更新播放時間duration.innerHTML = palyer.duration;EventUtil.addHandler(btn,"click",function(event)){ if(player.paused){ player.play(); btn.value = "pause"; }else{ player.pause(); player.value = "play"; }}//定時更新當前時間setInverval(function(){ curtime.innerHTML = player.currentTime;},250);

檢測編碼器的支持情況

canPlayType():接收一個參數(shù),一種格式/編解碼器字符創(chuàng)

if(audio.canPlayType("audio/mpeg"))

歷史狀態(tài)管理

HTML5通過更新history對象為管理歷史狀態(tài)提供了方便。 通過haschange事件,可以知道URL的參數(shù)什么時候發(fā)生了變化。而通過狀態(tài)管理API可以在不加載頁面的情況下改變?yōu)g覽器的URL。需要使用history.pushState()方法,該方法可以接受三個參數(shù):狀態(tài)對象,新狀態(tài)的標題和可選的相對URL。

history.pushState({name:"Nicholas"},"nichosla page","haha.html");

執(zhí)行此方法,新的狀態(tài)信息就會被加入歷史狀態(tài)棧,瀏覽器地址欄也會變成新的相對URL。但是瀏覽器并不會真的向服務器發(fā)送請求。第二個參數(shù)目前還沒有瀏覽器實現(xiàn)。傳入空字符串即可。按下后退按鈕后就可以觸發(fā)window對象的popState事件。該對象的一個state屬性就是pushState()的第一個參數(shù)。 要更新當前狀態(tài),可以是使用replaceState(),傳入的參數(shù)與pushState的前兩個參數(shù)相同。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品视频导航 | 欧美18xxxx | 亚洲va在线 | 操碰 | 日本在线播放一区二区 | 成人一级免费 | 一本色道久久久888 香蕉视频99 | 一级免费在线视频 | 视频一区二区三区免费观看 | 精品久久久一二三区播放播放播放视频 | 羞羞视频免费观看网站 | 国产一区二区三区在线观看视频 | 精品久久久久久 | 男女羞羞视频 | 中国字幕av| 久久久久久中文字幕 | 羞羞视频免费入口网站 | 久草在线公开视频 | 国产美女爽到喷白浆的 | 久久精品首页 | 欧美性成人 | 日日鲁夜夜视频热线播放 | 狠狠干夜夜操 | 狠狠操精品视频 | 久久综合av| 九九福利视频 | 国产精品久久久久久久久久10秀 | 主人在调教室性调教女仆游戏 | 成人男女啪啪免费观看网站四虎 | 久久久久国产成人精品亚洲午夜 | av国产片| 久久精品国产99国产精品澳门 | 99精品视频一区二区三区 | 亚洲一级片在线观看 | 久久艹艹艹 | 欧美爱爱视频免费看 | 一级国产航空美女毛片内谢 | 国产1区在线 | 国产精品久久久久久久久久三级 | 久久69精品久久久久久国产越南 | 日韩精品网站在线观看 |