HTML5 脚本编程:HTML5 规范定义了很多新HTML 标记。为了配合这些标记的变化,HTML5规范也用显著篇幅定义了很多JavaScript API。定义这些API 的用意就是简化此前实现起来困难重重的任务,最终简化创建动态Web 界面的工作。

1.跨文档消息传递:跨文档消息传送(cross-document messaging),有时候简称为XDM,指的是在来自不同域的页面间传递消息。例如,www.wrox.com域中的页面与位于一个内嵌框架中的p2p.wrox.com 域中的页面通信。在XDM 机制出现之前,要稳妥地实现这种通信需要花很多工夫。XDM 把这种机制规范化,让我们能既稳妥又简单地实现跨文档通信。

XDM 的核心是postMessage()方法。在HTML5 规范中,除了XDM部分之外的其他部分也会提到这个方法名,但都是为了同一个目的:向另一个地方传递数据。对于XDM而言,“另一个地方”指的是包含在当前页面中的<iframe>元素,或者由当前页面弹出的窗口。

postMessage()方法接收两个参数:一条消息和一个表示消息接收方来自哪个域的字符串。第二个参数对保障安全通信非常重要,可以防止浏览器把消息发送到不安全的地方。来看下面的例子。

//注意:所有支持XDM 的浏览器也支持iframe 的contentWindow 属性
var iframeWindow = document.getElementById("myframe").contentWindow;
iframeWindow.postMessage("A secret", "http://www.wrox.com");

最后一行代码尝试向内嵌框架中发送一条消息,并指定框架中的文档必须来源于"http://www.wrox.com"域。如果来源匹配,消息会传递到内嵌框架中;否则,postMessage()什么也不做。这一限制可以避免窗口中的位置在你不知情的情况下发生改变。如果传给postMessage()的第二个参数是"*",则表示可以把消息发送给来自任何域的文档,但我们不推荐这样做。

接收到XDM消息时,会触发window 对象的message 事件。这个事件是以异步形式触发的,因此从发送消息到接收消息(触发接收窗口的message 事件)可能要经过一段时间的延迟。触发message事件后,传递给onmessage 处理程序的事件对象包含以下三方面的重要信息。

  1. data:作为postMessage()第一个参数传入的字符串数据。
  2. origin:发送消息的文档所在的域,例如"http://www.wrox.com"。
  3. source:发送消息的文档的window 对象的代理。这个代理对象主要用于在发送上一条消息的窗口中调用postMessage()方法。如果发送消息的窗口来自同一个域,那这个对象就是window。

接收到消息后验证发送窗口的来源是至关重要的。就像给postMessage()方法指定第二个参数,以确保浏览器不会把消息发送给未知页面一样,在onmessage 处理程序中检测消息来源可以确保传入的消息来自已知的页面。基本的检测模式如下。

EventUtil.addHandler(window, "message", function(event){//确保发送消息的域是已知的域if (event.origin == "http://www.wrox.com"){//处理接收到的数据processMessage(event.data);//可选:向来源窗口发送回执event.source.postMessage("Received!", "http://p2p.wrox.com");}
});

还是要提醒大家,event.source 大多数情况下只是window 对象的代理,并非实际的window 对象。换句话说,不能通过这个代理对象访问window 对象的其他任何信息。记住,只通过这个代理调用postMessage()就好,这个方法永远存在,永远可以调用。

XDM 还有一些怪异之处。首先,postMessage()的第一个参数最早是作为“永远都是字符串”来实现的。但后来这个参数的定义改了,改成允许传入任何数据结构。可是,并非所有浏览器都实现了这一变化。为保险起见,使用postMessage()时,最好还是只传字符串。如果你想传入结构化的数据,最佳选择是先在要传入的数据上调用JSON.stringify(),通过postMessage()传入得到的字符串,然后再在onmessage 事件处理程序中调用JSON.parse()。

在通过内嵌框架加载其他域的内容时,使用XDM 是非常方便的。因此,在混搭(mashup)和社交网络应用中,这种传递消息的方法极为常用。有了XDM,包含<iframe>的页面可以确保自身不受恶意内容的侵扰,因为它只通过XDM 与嵌入的框架通信。而XDM 也可以在来自相同域的页面间使用。

支持XDM 的浏览器有IE8+、Firefox 3.5+、Safari 4+、Opera、Chrome、iOS 版Safari 及Android 版WebKit 。XDM 已经作为一个规范独立出来, 现在它的名字叫Web Messaging , 官方页面是http://dev.w3.org/html5/postmsg/。

2.原生拖放:最早在网页中引入JavaScript 拖放功能的是IE4。当时,网页中只有两种对象可以拖放:图像和某些文本。拖动图像时,把鼠标放在图像上,按住鼠标不放就可以拖动它。拖动文本时,要先选中文本,然后可以像拖动图像一样拖动被选中的文本。在IE 4 中,唯一有效的放置目标是文本框。到了IE5,拖放功能得到扩展,添加了新的事件,而且几乎网页中的任何元素都可以作为放置目标。IE5.5 更进一步,让网页中的任何元素都可以拖放。(IE6 同样也支持这些功能。)HTML5 以IE 的实例为基础制定了拖放规范。Firefox 3.5、Safari 3+和Chrome 也根据HTML5 规范实现了原生拖放功能。

说到拖放,最有意思的恐怕就是能够在框架间、窗口间,甚至在应用间拖放网页元素了。浏览器对拖放的支持为实现这些功能提供了便利。

  • 拖放事件:通过拖放事件,可以控制拖放相关的各个方面。其中最关键的地方在于确定哪里发生了拖放事件,有些事件是在被拖动的元素上触发的,而有些事件是在放置目标上触发的。拖动某元素时,将依次触发下列事件:

  1. dragstart
  2. drag
  3. dragend

按下鼠标键并开始移动鼠标时,会在被拖放的元素上触发dragstart 事件。此时光标变成“不能放”符号(圆环中有一条反斜线),表示不能把元素放到自己上面。拖动开始时,可以通过ondragstart事件处理程序来运行JavaScript 代码。

触发dragstart 事件后,随即会触发drag 事件,而且在元素被拖动期间会持续触发该事件。这个事件与mousemove 事件相似,在鼠标移动过程中,mousemove 事件也会持续发生。当拖动停止时(无论是把元素放到了有效的放置目标,还是放到了无效的放置目标上),会触发dragend 事件。

上述三个事件的目标都是被拖动的元素。默认情况下,浏览器不会在拖动期间改变被拖动元素的外观,但你可以自己修改。不过,大多数浏览器会为正被拖动的元素创建一个半透明的副本,这个副本始终跟随着光标移动。

当某个元素被拖动到一个有效的放置目标上时,下列事件会依次发生:

  1. dragenter
  2. dragover
  3. dragleave 或drop

只要有元素被拖动到放置目标上,就会触发dragenter 事件(类似于mouseover 事件)。紧随其后的是dragover 事件,而且在被拖动的元素还在放置目标的范围内移动时,就会持续触发该事件。如果元素被拖出了放置目标,dragover 事件不再发生,但会触发dragleave 事件(类似于mouseout事件)。如果元素被放到了放置目标中,则会触发drop 事件而不是dragleave 事件。上述三个事件的目标都是作为放置目标的元素。

  • 自定义放置目标:在拖动元素经过某些无效放置目标时,可以看到一种特殊的光标(圆环中有一条反斜线),表示不能放置。虽然所有元素都支持放置目标事件,但这些元素默认是不允许放置的。如果拖动元素经过不允许放置的元素,无论用户如何操作,都不会发生drop 事件。不过,你可以把任何元素变成有效的放置目标,方法是重写dragenter 和dragover 事件的默认行为。例如,假设有一个ID 为"droptarget"的<div>元素,可以用如下代码将它变成一个放置目标。

var droptarget = document.getElementById("droptarget");
EventUtil.addHandler(droptarget, "dragover", function(event){EventUtil.preventDefault(event);
});
EventUtil.addHandler(droptarget, "dragenter", function(event){EventUtil.preventDefault(event);
});

以上代码执行后,你就会发现当拖动着元素移动到放置目标上时,光标变成了允许放置的符号。当然,释放鼠标也会触发drop 事件。

在Firefox 3.5+中,放置事件的默认行为是打开被放到放置目标上的URL。换句话说,如果是把图像拖放到放置目标上,页面就会转向图像文件;而如果是把文本拖放到放置目标上,则会导致无效URL错误。因此,为了让Firefox 支持正常的拖放,还要取消drop 事件的默认行为,阻止它打开URL:

EventUtil.addHandler(droptarget, "drop", function(event){EventUtil.preventDefault(event);
});
  • dataTransfer对象:只有简单的拖放而没有数据变化是没有什么用的。为了在拖放操作时实现数据交换,IE 5 引入了dataTransfer 对象,它是事件对象的一个属性,用于从被拖动元素向放置目标传递字符串格式的数据。因为它是事件对象的属性,所以只能在拖放事件的事件处理程序中访问dataTransfer 对象。在事件处理程序中,可以使用这个对象的属性和方法来完善拖放功能。目前,HTML5 规范草案也收入了dataTransfer 对象。

dataTransfer 对象有两个主要方法:getData()和setData()。不难想象,getData()可以取得由setData()保存的值。setData()方法的第一个参数,也是getData()方法唯一的一个参数,是一个字符串,表示保存的数据类型,取值为"text"或"URL",如下所示:

//设置和接收文本数据
event.dataTransfer.setData("text", "some text");
var text = event.dataTransfer.getData("text");
//设置和接收URL
event.dataTransfer.setData("URL", "http://www.wrox.com/");
var url = event.dataTransfer.getData("URL");

IE只定义了"text"和"URL"两种有效的数据类型,而HTML5则对此加以扩展,允许指定各种MIME类型。考虑到向后兼容,HTML5 也支持"text"和"URL",但这两种类型会被映射为"text/plain"和"text/uri-list"。

实际上,dataTransfer 对象可以为每种MIME 类型都保存一个值。换句话说,同时在这个对象中保存一段文本和一个URL 不会有任何问题。不过,保存在dataTransfer 对象中的数据只能在drop事件处理程序中读取。如果在ondrop 处理程序中没有读到数据,那就是dataTransfer 对象已经被销毁,数据也丢失了。

在拖动文本框中的文本时,浏览器会调用setData()方法,将拖动的文本以"text"格式保存在dataTransfer 对象中。类似地,在拖放链接或图像时,会调用setData()方法并保存URL。然后,在这些元素被拖放到放置目标时,就可以通过getData()读到这些数据。当然,作为开发人员,你也可以在dragstart 事件处理程序中调用setData(),手工保存自己要传输的数据,以便将来使用。

将数据保存为文本和保存为URL 是有区别的。如果将数据保存为文本格式,那么数据不会得到任何特殊处理。而如果将数据保存为URL,浏览器会将其当成网页中的链接。换句话说,如果你把它放置到另一个浏览器窗口中,浏览器就会打开该URL。

Firefox 在其第5 个版本之前不能正确地将"url" 和"text" 映射为"text/uri-list" 和"text/plain"。但是却能把"Text"(T 大写)映射为"text/plain"。为了更好地在跨浏览器的情况下从dataTransfer 对象取得数据,最好在取得URL 数据时检测两个值,而在取得文本数据时使用"Text"。

var dataTransfer = event.dataTransfer;
//读取URL
var url = dataTransfer.getData("url") ||dataTransfer.getData("text/uri-list");
//读取文本
var text = dataTransfer.getData("Text");

注意,一定要把短数据类型放在前面,因为IE 10 及之前的版本仍然不支持扩展的MIME 类型名,而它们在遇到无法识别的数据类型时,会抛出错误。

  • dropEffect与effectAllowed::利用dataTransfer 对象,可不光是能够传输数据,还能通过它来确定被拖动的元素以及作为放置目标的元素能够接收什么操作。为此,需要访问dataTransfer 对象的两个属性:dropEffect 和effectAllowed。

其中,通过dropEffect 属性可以知道被拖动的元素能够执行哪种放置行为。这个属性有下列4个可能的值。

  1. "none":不能把拖动的元素放在这里。这是除文本框之外所有元素的默认值。
  2. "move":应该把拖动的元素移动到放置目标。
  3. "copy":应该把拖动的元素复制到放置目标。
  4. "link":表示放置目标会打开拖动的元素(但拖动的元素必须是一个链接,有URL)。

在把元素拖动到放置目标上时,以上每一个值都会导致光标显示为不同的符号。然而,要怎样实现光标所指示的动作完全取决于你。换句话说,如果你不介入,没有什么会自动地移动、复制,也不会打开链接。总之,浏览器只能帮你改变光标的样式,而其他的都要靠你自己来实现。要使用dropEffect属性,必须在ondragenter 事件处理程序中针对放置目标来设置它。

dropEffect 属性只有搭配effectAllowed 属性才有用。effectAllowed 属性表示允许拖动元素的哪种dropEffect,effectAllowed 属性可能的值如下。

  1. "uninitialized":没有给被拖动的元素设置任何放置行为。
  2. "none":被拖动的元素不能有任何行为。
  3. "copy":只允许值为"copy"的dropEffect。
  4. "link":只允许值为"link"的dropEffect。
  5. "move":只允许值为"move"的dropEffect。
  6. "copyLink":允许值为"copy"和"link"的dropEffect。
  7. "copyMove":允许值为"copy"和"move"的dropEffect。
  8. "linkMove":允许值为"link"和"move"的dropEffect。
  9. "all":允许任意dropEffect。

必须在ondragstart 事件处理程序中设置effectAllowed 属性。

假设你想允许用户把文本框中的文本拖放到一个<div>元素中。首先,必须将dropEffect 和effectAllowed 设置为"move"。但是,由于<div>元素的放置事件的默认行为是什么也不做,所以文本不可能自动移动。重写这个默认行为,就能从文本框中移走文本。然后你就可以自己编写代码将文本插入到<div>中,这样整个拖放操作就完成了。如果你将dropEffect 和effectAllowed 的值设置为"copy",那就不会自动移走文本框中的文本。

Firefox 5 及之前的版本在处理effectAllowed 属性时有一个问题,即如果你在代码中设置了这个属性的值,那不一定会触发drop 事件。

  • 可拖动:默认情况下,图像、链接和文本是可以拖动的,也就是说,不用额外编写代码,用户就可以拖动它们。文本只有在被选中的情况下才能拖动,而图像和链接在任何时候都可以拖动。

让其他元素可以拖动也是可能的。HTML5 为所有HTML 元素规定了一个draggable 属性,表示元素是否可以拖动。图像和链接的draggable 属性自动被设置成了true,而其他元素这个属性的默认值都是false。要想让其他元素可拖动,或者让图像或链接不能拖动,都可以设置这个属性。例如:

<!-- 让这个图像不可以拖动 -->
<img src="smile.gif" draggable="false" alt="Smiley face">
<!-- 让这个元素可以拖动 -->
<div draggable="true">...</div>

支持draggable 属性的浏览器有IE 10+、Firefox 4+、Safari 5+和Chrome。Opera 11.5 及之前的版本都不支持HTML5 的拖放功能。另外,为了让Firefox 支持可拖动属性,还必须添加一个ondragstart事件处理程序,并在dataTransfer 对象中保存一些信息。

在IE9 及更早版本中,通过mousedown 事件处理程序调用dragDrop()能够让任何元素可拖动。而在Safari 4 及之前版本中,必须额外给相应元素设置CSS 样式–khtml-user-drag: element。

  • 其他成员:HTML5 规范规定dataTransfer 对象还应该包含下列方法和属性。

  1. addElement(element):为拖动操作添加一个元素。添加这个元素只影响数据(即增加作为拖动源而响应回调的对象),不会影响拖动操作时页面元素的外观。在写作本书时,只有Firefox 3.5+实现了这个方法。
  2. clearData(format):清除以特定格式保存的数据。实现这个方法的浏览器有IE、Fireforx 3.5+、Chrome 和Safari 4+。
  3. setDragImage(element, x, y):指定一幅图像,当拖动发生时,显示在光标下方。这个方法接收的三个参数分别是要显示的HTML 元素和光标在图像中的x、y 坐标。其中,HTML 元素可以是一幅图像,也可以是其他元素。是图像则显示图像,是其他元素则显示渲染后的元素。实现这个方法的浏览器有Firefox 3.5+、Safari 4+和Chrome。
  4. types:当前保存的数据类型。这是一个类似数组的集合,以"text"这样的字符串形式保存着数据类型。实现这个属性的浏览器有IE10+、Firefox 3.5+和Chrome。

3.媒体元素:随着音频和视频在Web 上的迅速流行,大多数提供富媒体内容的站点为了保证跨浏览器兼容性,不得不选择使用Flash。HTML5 新增了两个与媒体相关的标签,让开发人员不必依赖任何插件就能在网页中嵌入跨浏览器的音频和视频内容。这两个标签就是<audio>和<video>。

这两个标签除了能让开发人员方便地嵌入媒体文件之外,都提供了用于实现常用功能的JavaScriptAPI,允许为媒体创建自定义的控件。这两个元素的用法如下。

<!-- 嵌入视频 -->
<video src="conference.mpg" id="myVideo">Video player not available.</video>
<!-- 嵌入音频 -->
<audio src="song.mp3" id="myAudio">Audio player not available.</audio>

使用这两个元素时,至少要在标签中包含src 属性,指向要加载的媒体文件。还可以设置width和height 属性以指定视频播放器的大小,而为poster 属性指定图像的URI 可以在加载视频内容期间显示一幅图像。另外,如果标签中有controls 属性,则意味着浏览器应该显示UI 控件,以便用户直接操作媒体。位于开始和结束标签之间的任何内容都将作为后备内容,在浏览器不支持这两个媒体元素的情况下显示。

因为并非所有浏览器都支持所有媒体格式,所以可以指定多个不同的媒体来源。为此,不用在标签中指定src 属性,而是要像下面这样使用一或多个<source>元素。

<!-- 嵌入视频 -->
<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 player not available.
</video>
<!-- 嵌入音频 -->
<audio id="myAudio"><source src="song.ogg" type="audio/ogg"><source src="song.mp3" type="audio/mpeg">Audio player not available.
</audio>

关于视频和音频编解码器的内容超出了本书讨论的范围。作者在此只想告诉大家,不同的浏览器支持不同的编解码器,因此一般来说指定多种格式的媒体来源是必需的。支持这两个媒体元素的浏览器有IE9+、Firefox 3.5+、Safari 4+、Opera 10.5+、Chrome、iOS 版Safari 和Android 版WebKit。

  • 属性:<video>和<audio>元素都提供了完善的JavaScript 接口。下表列出了这两个元素共有的属性,通过这些属性可以知道媒体的当前状态。
属性数据类型说明
autoplay布尔值取得或设置autoplay标志
buffered时间范围表示已下载的缓冲的时间范围的对象
bufferedBytes字节范围表示已下载的缓冲的字节范围的对象
bufferingRate整数下载过程中每秒钟平均接收到的位数
bufferingThrottled布尔值表示浏览器是否对缓冲进行了节流
controls布尔值取得或设置controls属性,用于显示或隐藏浏览器内置的控件
currentLoop整数媒体文件已经循环的次数
currentSrc字符串当前播放的媒体文件的URL
currentTime浮点数已经播放的秒数
defaultPlaybackRate浮点数取得或设置默认的播放速度。默认值为1.0秒
duration浮点数媒体的总播放时间(秒数)
ended布尔值表示媒体文件是否播放完成
loop布尔值取得或设置媒体文件在播放完成后是否再从头开始播放
muted布尔值取得或设置媒体文件是否静音
networkState整数

表示当前媒体的网络连接状态:0表示空,1表示正在加载,2表示正在加载元数据,

3表示已经加载了第一帧,4表示加载完成

paused布尔值表示播放器是否暂停
playbackRate浮点数

取得或设置当前的播放速度。用户可以改变这个值,让媒体播放速度变快或变慢,

这与defaultPlaybackRate只能由开发人员修改的defaultPlaybackRate不同

played时间范围到目前为止已经播放的时间范围
readyState整数

表示媒体是否已经就绪(可以播放了)。0表示数据不可用,1表示可以显示当前帧,

2表示可以开始播放,3表示媒体可以从头到尾播放

seekable时间范围可以搜索的时间范围
seeking布尔值表示播放器是否正移动到媒体文件中的新位置
src字符串媒体文件的来源。任何时候都可以重写这个属性
start浮点数取得或设置媒体文件中开始播放的位置,以秒表示
totalBytes整数当前资源所需的总字节数
videoHeight整数返回视频(不一定是元素)的高度。只适用于<video>
videoWidth整数返回视频(不一定是元素)的宽度。只适用于<video>
volume浮点数取得或设置当前音量,值为0.0到1.0
  • 事件:除了大量属性之外,这两个媒体元素还可以触发很多事件。这些事件监控着不同的属性的变化,这些变化可能是媒体播放的结果,也可能是用户操作播放器的结果。下表列出了媒体元素相关的事件。
事件触发时机
abort下载中断
canplay可以播放时;readyState值为2
canplaythrough播放可继续,而且应该不会中断;readyState值为3
canshowcurrentframe当前帧已经下载完成;readyState值为1
dataunavailable因为没有数据而不能播放;readyState值为0
durationchangeduration属性的值改变
emptied网络连接关闭
empty发生错误阻止了媒体下载
ended媒体已播放到末尾,播放停止
error下载期间发生网络错误
load所有媒体已加载完成。这个事件可能会被废弃,建议使用canplaythrough
loadeddata媒体的第一帧已加载完成
loadedmetadata媒体的元数据已加载完成
loadstart下载已开始
pause播放已暂停
play媒体已接收到指令开始播放
playing媒体已实际开始播放
progress正在下载
ratechange播放媒体的速度改变
seeked搜索结束
seeking正移动到新位置
stalled浏览器尝试下载,但未接收到数据
timeupdatecurrentTime被以不合理或意外的方式更新
volumechangevolume属性值或muted属性值已改变
waiting播放暂停,等待下载更多数据

这些事件之所以如此具体,就是为了让开发人员只使用少量HTML 和JavaScript(与创建Flash 影片相比)即可编写出自定义的音频/视频播放器。

  • 自定义媒体播放器:使用<audio>和<video>元素的play()和pause()方法,可以手工控制媒体文件的播放。组合使用属性、事件和这两个方法,很容易创建一个自定义的媒体播放器,如下面的例子所示。
<div class="mediaplayer"><div class="video"><video id="player" src="movie.mov" poster="mymovie.jpg" width="300" 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>

以上基本的HTML 再加上一些JavaScript 就可以变成一个简单的视频播放器。以下就是JavaScript代码。

//取得元素的引用
var player = document.getElementById("player"),
btn = document.getElementById("video-btn"),
curtime = document.getElementById("curtime"),
duration = document.getElementById("duration");
//更新播放时间
duration.innerHTML = player.duration;
//为按钮添加事件处理程序
EventUtil.addHandler(btn, "click", function(event){if (player.paused){player.play();btn.value = "Pause";} else {player.pause();btn.value = "Play";}
});
//定时更新当前时间
setInterval(function(){curtime.innerHTML = player.currentTime;
}, 250);

以上JavaScript 代码给按钮添加了一个事件处理程序,单击它能让视频在暂停时播放,在播放时暂停。通过<video>元素的load 事件处理程序,设置了加载完视频后显示播放时间。最后,设置了一个计时器,以更新当前显示的时间。你可以进一步扩展这个视频播放器,监听更多事件,利用更多属性。而同样的代码也可以用于<audio>元素,以创建自定义的音频播放器。

  • 检测编解码器的支持情况:如前所述,并非所有浏览器都支持<video>和<audio>的所有编解码器,而这基本上就意味着你必须提供多个媒体来源。不过,也有一个JavaScript API 能够检测浏览器是否支持某种格式和编解码器。这两个媒体元素都有一个canPlayType()方法,该方法接收一种格式/编解码器字符串,返回"probably"、"maybe"或""( 空字符串)。空字符串是假值,因此可以像下面这样在if 语句中使用canPlayType():
if (audio.canPlayType("audio/mpeg")){//进一步处理
}

而"probably"和"maybe"都是真值,因此在if 语句的条件测试中可以转换成true。

如果给canPlayType()传入了一种MIME 类型,则返回值很可能是"maybe"或空字符串。这是因为媒体文件本身只不过是音频或视频的一个容器,而真正决定文件能否播放的还是编码的格式。在同时传入MIME 类型和编解码器的情况下,可能性就会增加,返回的字符串会变成"probably"。下面来看几个例子。

var audio = document.getElementById("audio-player");
//很可能"maybe"
if (audio.canPlayType("audio/mpeg")){//进一步处理
}
//可能是"probably"
if (audio.canPlayType("audio/ogg; codecs=\"vorbis\"")){//进一步处理
}

注意,编解码器必须用引号引起来才行。下表列出了已知的已得到支持的音频格式和编解码器。

音频字符串支持的浏览器
AACaudio/mp4;codecs="mp4a.40.2"IE9+、Safari 4+、iOS版Safari
MP3audio/mpegIE9+、Chrome
Vorbisaudio/ogg;codecs="vorbis"Firefox 3.5+、Chrome、Opera 10.5+
WAVaudio/wav;codecs="1"Firefox 3.5+、Opera 10.5+、Chrome

当然,也可以使用canPlayType()来检测视频格式。下表列出了已知的已得到支持的音频格式和编解码器。

视频字符串支持的浏览器
H.264video/mp4; codecs="avc1.42E01E, mp4a.40.2"IE9+、Safari 4+、iOS版Safari、Android版WebKit
Theoravideo/ogg; codecs="theora"Firefox 3.5+、Opera 10.5、Chrome
WebMvideo/webm; codecs="vp8, vorbis"Firefox 4+、Opera 10.6、Chrome
  • Audio类型:<audio>元素还有一个原生的JavaScript 构造函数Audio,可以在任何时候播放音频。从同为DOM元素的角度看,Audio 与Image 很相似,但Audio 不用像Image 那样必须插入到文档中。只要创建一个新实例,并传入音频源文件即可。
var audio = new Audio("sound.mp3");
EventUtil.addHandler(audio, "canplaythrough", function(event){audio.play();
});

创建新的Audio 实例即可开始下载指定的文件。下载完成后,调用play()就可以播放音频。

在iOS 中,调用play()时会弹出一个对话框,得到用户的许可后才能播放声音。如果想在一段音频播放后再播放另一段音频,必须在onfinish 事件处理程序中调用play()方法。

4.历史状态管理:历史状态管理是现代Web 应用开发中的一个难点。在现代Web 应用中,用户的每次操作不一定会打开一个全新的页面,因此“后退”和“前进”按钮也就失去了作用,导致用户很难在不同状态间切换。要解决这个问题,首选使用hashchange 事件(第13 章曾讨论过)。HTML5 通过更新history 对象为管理历史状态提供了方便。

通过hashchange 事件,可以知道URL 的参数什么时候发生了变化,即什么时候该有所反应。而通过状态管理API , 能够在不加载新页面的情况下改变浏览器的URL 。为此, 需要使用history.pushState()方法,该方法可以接收三个参数:状态对象、新状态的标题和可选的相对URL。例如:

history.pushState({name:"Nicholas"}, "Nicholas' page", "nicholas.html");

执行pushState()方法后,新的状态信息就会被加入历史状态栈,而浏览器地址栏也会变成新的相对URL。但是,浏览器并不会真的向服务器发送请求,即使状态改变之后查询location.href 也会返回与地址栏中相同的地址。另外,第二个参数目前还没有浏览器实现,因此完全可以只传入一个空字符串,或者一个短标题也可以。而第一个参数则应该尽可能提供初始化页面状态所需的各种信息。

因为pushState()会创建新的历史状态,所以你会发现“后退”按钮也能使用了。按下“后退”按钮,会触发window 对象的popstate 事件。popstate 事件的事件对象有一个state 属性,这个属性就包含着当初以第一个参数传递给pushState()的状态对象。

EventUtil.addHandler(window, "popstate", function(event){var state = event.state;if (state){ //第一个页面加载时state 为空processState(state);}
});

得到这个状态对象后,必须把页面重置为状态对象中的数据表示的状态(因为浏览器不会自动为你做这些)。记住,浏览器加载的第一个页面没有状态,因此单击“后退”按钮返回浏览器加载的第一个页面时,event.state 值为null。

要更新当前状态,可以调用replaceState(),传入的参数与pushState()的前两个参数相同。调用这个方法不会在历史状态栈中创建新状态,只会重写当前状态。

history.replaceState({name:"Greg"}, "Greg's page");

支持HTML5 历史状态管理的浏览器有Firefox 4+、Safari 5+、Opera 11.5+和Chrome。在Safari 和Chrome 中,传递给pushState()或replaceState()的状态对象中不能包含DOM 元素。而Firefox支持在状态对象中包含DOM 元素。Opera 还支持一个history.state 属性,它返回当前状态的状态对象。

在使用HTML5 的状态管理机制时,请确保使用pushState()创造的每一个“假”URL,在Web 服务器上都有一个真的、实际存在的URL 与之对应。否则,单击“刷新”按钮会导致404 错误。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. SPreadoc感染型还原代码

    文章目录简要说明自身还原过程代码分析代码还原 简要说明 前段时间遇见了一个被Spreadoc病毒感染的winrar安装包,样本运行后将自身还原然后执行其他恶意行为,由于样本代码量也比较大,我也只是分析了它exe还原的过程。它的还原过程还是比较有意思的,还运用了一些反沙箱反虚拟…...

    2024/4/24 10:38:19
  2. 我招了个程序员:他什么都好,就是不太会写程序

    我招了个程序员:他什么都好,就是不太会写程序多年以后, ShowMeBug 的创始人李亚飞站在医院产房前,依然会想起大学刚毕业时面试的第一家公司。 1 当时,CTO 面试到他:“管道是什么?”“简历上说你的 bash 脚本写的很好,你的代码在哪里?能运行吗?” “我做了很多有趣的小…...

    2024/4/24 10:38:19
  3. 一文快速了解 Crust Network 分布式云

    Crust 实现了去中心化存储的激励层协议,适配包括 IPFS 在内的多种存储层协议,并对应用层提供支持。同时 Crust 的架构也有能力对去中心化计算层提供支持,构建分布式云生态。01. Crust 是什么?Crust 是一个激励去中心化云服务的应用型公链,现阶段 Crust 会先实现一个去中心…...

    2024/4/24 10:38:20
  4. Directory Opus一款功能强大的资源管理器

    Directory Opus一款功能强大的资源管理器 Directory Opus 是一款由澳大利亚 GP 软件公司设计开发的功能强大且简单、易用的文件资源管理工具,其主程序采用与 Windows 系统相似的用户交互界面即具有良好的适应性。与之相媲美的则是我们熟知的 Total Commander 文件管理器,称得…...

    2024/4/28 0:00:11
  5. WPF中的DataGrid实现单元格内容自动换行

    这里有两种实现方式:(推荐第二种)一 、用ElementStyle<DataGrid GridLinesVisibility="None" AutoGenerateColumns="False" Loaded="DataGrid_Loaded" Height="300" Width="500"><DataGrid.Columns><Data…...

    2024/4/24 10:38:15
  6. DVWA - Brute Force (high)

    high级别 (使用burp suite进行暴力破解) 将登录请求进行拦截,发现增加了user_token参数,使用了随机token机制来防止CSRF,防止了重放攻击,增加了爆破难度。但是依然可以使用burpsuite来爆破。 1.先将请求发送到intruder。2. 设置两个参数 password和user_token为变量,攻击…...

    2024/4/24 10:38:14
  7. 《境外汇款申请书》填报说明

    《境外汇款申请书》填报说明以下为境外汇款申请书上所涵盖的栏位/信息及说明介绍境外汇款申请书:凡采用电汇、票汇或信汇方式对境外付款的机构或个人(统称"汇款人"),须逐笔填写此申请书。日期:指汇款人填写此申请书的日期。申报号码:根据国家外汇管理局有关申报…...

    2024/4/24 10:38:13
  8. (期末考试prepare)数据结构(c语言版)第八章——内部排序

    1.从未排序的序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法(插入排序) 2.从未排序的序列中挑选元素,将其依次放入已排序序列(初始时为空)的一端的方法(选择排序). 析:与插入排序区别。选择排序是指逐次选出第i大的直接放到序…...

    2024/4/28 2:22:08
  9. 2.搭建Wiki环境

    搭建wiki(jira+confluence)环境 需要搭建软件,联系QQ:2869192751 1.环境准备 #1.需要java环境 [root@jiraconfluence ~]# yum install java -y [root@jiraconfluence ~]# java -version openjdk version "1.8.0_242" OpenJDK Runtime Environment (build 1.8.0_2…...

    2024/4/24 10:38:11
  10. UZI退役,爷青结!我用python爬取了七万条弹幕,回顾RNG和SKT的经典对决!

    北京时间2020年6月3日,RNG战队ADC选手Uzi简自豪宣布退役,这位LPL编号006的老将最终还是选择离开了这个他拼搏过七年的赛场。2012年底初登职业赛场的15岁少年,到如今已是功勋卓著伤痕满身的23岁老将。2019全球总决赛小组赛C组第二轮最后一场比赛,成为了Uzi在国际赛场乃至职业…...

    2024/4/24 10:38:12
  11. 闪客精灵,让你不再为flash动画发愁

    不知你是否有过这样的经历,电脑或手机无法打开flash文件,因为我们需要转换flash动画格式。笔者经常有这样的困扰,尤其是在浏览某些国外的网站或视频时,某些flash动画的页面往往会令电脑无法识别。因为flash动画往往是需要flash player来识别,目前还不够完善,一些配置较差…...

    2024/4/27 22:04:26
  12. 学习笔记(01):跟汤老师学Java(第24季):JavaScript-常用事件

    立即学习:https://edu.csdn.net/course/play/26535/335662?utm_source=blogtoedu...

    2024/4/24 10:38:14
  13. 用好“亲和图”带你拨开云雾见月明

    你是否常常遇到毫无头绪,剪不断、理还乱的问题?你是否手头上有一堆的资料但是无从下手?是否团队成员意见不一,还要达成一致呢?是不是很想理清思路,找到办法解决这些棘手的事情呢?巧了,亲和图可以办到。亲和图的前世今生何为亲和图亲和图是把大量收集到的事实、意见或构…...

    2024/4/16 6:20:51
  14. 十三、SpringCloud学习笔记之Gateway+demo

    Gateway网关 概述简介 官网: https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/ 是什么 Gateway 是在Spring生态系统之上,基于Spring5,Spring Boot2 和Project Reactor等技术。 Gateway旨在提供一种简单而有效的方式来对API…...

    2024/4/18 11:18:55
  15. Python爬虫开源项目合集

    scrapy - 最出名的网络爬虫,一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。官方主页,Scrapy 轻松定制网络爬虫 - 教程,Scrapy 中文指南 。项目地址:https://github.com/scrapy…...

    2024/4/16 6:21:01
  16. 2020帕金森有望

    据统计,目前中国的帕金森患者总数多达270万人,约占全球50%。卢老表示,帕金森病是可防和可控的。及时发现,系统治疗对于抗击帕金森病尤为重要。卢老介绍,中医对改善帕金森病引起的运动迟缓、静止性震颤、肌肉僵直等症状效果明显。 帕金森氏病又称震颤麻痹,是中老年人最常见…...

    2024/4/16 6:20:56
  17. 区块链平台追踪价值$ 2.5B的茶产品

    中国云南省于6月3日宣布为其普洱茶场正式推出由区块链支持的可追溯性平台。区块链平台首次在云南昆明举行的2020年凤凰巢古树春茶新产品发布会上宣布。他们将使用该平台对全省42,000公顷农田进行质量控制,销售和贷款融资业务。根据Chinanews的报道,该省以其深色的发酵茶而闻名…...

    2024/4/28 0:36:57
  18. 日语分词转为假名

    使用 apache lucenejar:lucene-core-8.5.2.jar,lucene-analyzers-common-8.5.2.jar,lucene-analyzers-kuromoji-8.5.2.jarpackage test;import java.io.IOException;import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.ja.JapaneseAnalyzer…...

    2024/4/16 6:21:06
  19. 这四大底层能力,决定了你的职场竞争力

    工作3年,仍羞于跟领导提升职加薪,这是缺乏基本谈判力的表现。那个被嘲笑的同事,却升职成了领导,这是职场思维力带来的差异。例会上同事的创意令你惊叹不已,因为他们具备优秀的产品营销力。刚升职开始带团队,但只能凡事亲力亲为,这是缺乏领导力的表现。而谈判力、思维力、…...

    2024/4/16 6:20:41
  20. 02-SpringBoot高级(SpringBoot自定配置 ;SpringBoot事件监听; SpringBoot流程分析; SpringBoot监控; SpringBoot部署)

    01-SpringBoot高级-今日内容SpringBoot自定配置 SpringBoot事件监听 SpringBoot流程分析 SpringBoot监控 SpringBoot部署02-SpringBoot自动配置-Condition-1 Condition是Spring4.0后引入的条件化配置接口,通过实现Condition接口可以完成有条件的加载相应的Bean @Conditional要…...

    2024/4/16 6:21:01

最新文章

  1. 使用OpenVINO在本地CPU运行大模型的过程

    1. 引入 OpenVINO 工具套件是Intel开源的工具&#xff0c;可以在CPU上加速 AI推理过程。主要是用在CPU场景下的&#xff0c;在Intel的硬件上使用。 本文在CPU上实测一下OpenVINO运行大模型ChatGLM3-6b的运行效果&#xff0c;并记录整个过程。 2. 测试环境 在如下配置的笔记本…...

    2024/4/28 2:26:39
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. javaWeb网上零食销售系统

    1 绪 论 目前&#xff0c;我国的网民数量已经达到7.31亿人&#xff0c;随着互联网购物和互联网支付的普及&#xff0c;使得人类的经济活动进入了一个崭新的时代。淘宝&#xff0c;京东等网络消费平台功能的日益完善&#xff0c;使得人们足不出户就可以得到自己想要的东西。如今…...

    2024/4/27 19:08:10
  4. Redis分区

    Redis分区是一种数据分片技术&#xff0c;用于将数据分布到多个Redis实例&#xff08;节点&#xff09;上以提高性能和扩展性。分区使得Redis能够处理比单个实例更大的数据集&#xff0c;并允许并行处理客户端请求。 原理&#xff1a; Redis分区通过一致性哈希算法&#xff08;…...

    2024/4/23 6:11:42
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/26 20:12:18
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57