客户端JavaScript

Window对象是所有客户端JavaScript特性和API的主要接入点。它表示Web浏览器的一个窗口或窗体,并且可以用标识符window来引用它。Window对象定义了一些属性,比如,指代Location对象的location属性,Location对象指定当前显示在窗口中的URL,并允许脚本往窗口里载入新的URL:

//设置location属性,从而跳转到新的Web页面
window.location="http://www.oreilly.com/";


Window对象还定义了一些方法,比如alert(),可以弹出一个对话框用来显示一些信息。还有setTimeout(),可以注册一个函数,在给定的一段时间之后触发一个回调:

//等待两秒,然后说hello
setTimeout(function(){alert("hello world");},2000);


注意上面的代码并没有显式地使用window属性。在客户端JavaScript中,Window对象也是全局对象。这意味着Window对象处于作用域链的顶部,它的属性和方法实际上是全局变量和全局函数。Window对象有一个引用自身的属性,叫做window。如果需要引用窗口对象本身,可以用这个属性,但是如果只是想要引用全局窗口对象的属性,通常并不需要用到window。

Window对象还定义了很多其他重要的属性、方法和构造函数。

Window对象中其中一个最重要的属性是document,它引用Document对象,后者表示显示在窗口中的文档。Document对象有一些重要方法,比如getElementById(),可以基于元素id属性的值返回单一的文档元素(表示HTML标签的一对开始/结束标记,以及它们之间的所有内容):

//查找id="timestamp"的元素
var timestamp=document.getElementById("timestamp");


getElementById()返回的Element对象有其他重要的属性和方法,比如允许脚本获取它的内容,设置属性值等:

//如果元素为空,往里面插入当前的日期和时间
if(timestamp.firstChild==null)
timestamp.appendChild(document.createTextNode(new Date().toString()));

 

每个Element对象都有style和className属性,允许脚本指定文档元素的CSS样式,或修改应用到元素上的CSS类名。设置这些CSS相关的属性会改变文档元素的呈现:

//显式修改目标元素的呈现
timestamp.style.backgroundColor="yellow";//或者只改变类,让样式表指定具体内容
timestamp.className="highlight";

Window、Document和Element对象上另一个重要的属性集合是事件处理程序相关的属性。可以在脚本中为之绑定一个函数,这个函数会在某个事件发生时以异步的方式调用。事件处理程序可以让JavaScript代码修改窗口、文档和组成文档的元素的行为。事件处理程序的属性名是以单词"on"开始的,用法如下:

//当用户单击timestamp元素时,更新它的内容
timestamp.οnclick=function(){this.innerHTML=new Date().toString();}


Window对象的onload处理程序是最重要的事件处理程序之一。当显示在窗口中的文档内容稳定并可以操作时会触发它。JavaScript代码通常封装在onload事件处理程序里。例13-1是onload处理程序的演示,并展示了客户端JavaScript的实例代码,包括查询文档元素、修改CSS类和定义事件处理程序。这个例子的JavaScript代码是放置在HTML的<script>标签之内的。注意代码里的一个函数是在另一个函数里定义的。因为事件处理程序的广泛使用,使得嵌套函数在客户端JavaScript中非常普遍。

例13-1:显示内容的简单客户端JavaScript

<!DOCTYPE html>
<html>
<head>
<style>/*本页的css样式表*/
.reveal*{display:none;}/*class="reveal"的元素的子元素都不显示*/
.reveal*.handle{display:block;}/*除了class="handle"的元素*/
</style>
<script>//所有的页面逻辑在onload事件之后启动
window.onload=function(){//找到所有class名为"reveal"的容器元素var elements=document.getElementsByClassName("reveal");for(var i=0;i<elements.length;i++){//对每个元素进行遍历var elt=elements[i];//找到容器中的"handle"元素var title=elt.getElementsByClassName("handle")[0];//当单击这个元素时,呈现剩下的内容addRevealHandler(title,elt);}function addRevealHandler(title,elt){title.onclick=function(){if(elt.className=="reveal")elt.className="revealed";else if(elt.className=="revealed")elt.className="reveal";}}
};
</script>
</head>
<body>
<div class="reveal">
<h1 class="handle">Click Here to Reveal Hidden Text</h1>
<p>This paragraph is hidden.It appears when you click on the title.</p>
</div>
</body>
</html>

 

JavaScript程序的执行

客户端JavaScript程序没有严格的定义。我们可以说JavaScript程序是由Web页面中所包含的所有JavaScript代码(内联脚本、HTML事件处理程序和javascript:URL)和通过<script>标签的src属性引用的外部JavaScript代码组成。所有这些单独的代码共用同一个全局Window对象。这意味着它们都可以看到相同的Document对象,可以共享相同的全局函数和变量的集合:如果一个脚本定义了新的全局变量或函数,那么这个变量或函数会在脚本执行之后对任意JavaScript代码可见。

如果Web页面包含一个嵌入的窗体(通常使用<iframe>元素),嵌入文档中的JavaScript代码和被嵌入文档里的JavaScript代码会有不同的全局对象,它可以当做一个单独的JavaScript程序。但是,要记住,没有严格的关于JavaScript程序范围的定义。如果外面和里面的文档来自于同一个服务器,那么两个文档中的代码就可以进行交互,并且如果你愿意,就可以把它们当做是同一个程序的两个相互作用的部分。

bookmarklet里的javascript:URL存在于文档之外,可以想象成是一种用户扩展或者对于其他程序的修改。当用户执行一个bookmarklet时,书签里的JavaScript代码就可以访问全局对象和当前文档的内容,以及对它进行操作。

JavaScript程序的执行有两个阶段。在第一阶段,载入文档内容,并执行<script>元素里的代码(包括内联脚本和外部脚本)。脚本通常会按它们在文档里的出现顺序执行。所有脚本里的JavaScript代码都是从上往下,按照它在条件、循环以及其他控制语句中的出现顺序执行。

当文档载入完成,并且所有脚本执行完成后,JavaScript执行就进入它的第二阶段。这个阶段是异步的,而且由事件驱动的。在事件驱动阶段,Web浏览器调用事件处理程序函数(由第一阶段里执行的脚本指定的HTML事件处理程序,或之前调用的事件处理程序来定义),来响应异步发生的事件。调用事件处理程序通常是响应用户输入(如鼠标单击,键盘按下等)。但是,还可以由网络活动、运行时间或者JavaScript代码中的错误来触发。注意,嵌入在Web页面里的javascript:URL也可以被当做是一种事件处理程序,因为直到用户通过单击链接或提交表单来激活之后它们才会有效果。

事件驱动阶段里发生的第一个事件是load事件,指示文档已经完全载入,并可以操作。JavaScript程序经常用这个事件来触发或发送消息。我们会经常看到一些定义函数的脚本程序,除了定义一个onload事件处理程序函数外不做其他操作,这个函数会在脚本事件驱动阶段开始时被load事件触发。正是这个onload事件会对文档进行操作,并做程序想做的任何事。JavaScript程序的载入阶段是相对短暂的,通常只持续1~2秒。在文档载入完成之后,只要Web浏览器显示文档,事件驱动阶段就会一直持续下去。因为这个阶段是异步的和事件驱动的,所以可能有长时间处于不活动状态,没有JavaScript被执行,被用户或网络事件触发的活动打断。

核心JavaScript和客户端JavaScript都有一个单线程执行模型。脚本和事件处理程序(无论如何)在同一个时间只能执行一个,没有并发性。这保持了JavaScript编程的简单性。

  • 同步、异步和延迟的脚本

JavaScript第一次添加到Web浏览器时,还没有API可以用来遍历和操作文档的结构和内容。当文档还在载入时,JavaScript影响文档内容的唯一方法是快速生成内容。它使用document.write()方法完成上述任务。例13-3展示了1996年最先进的JavaScript代码的样子。

例13-3:载入时生成文档内容

<h1>Table of Factorials</h1>
<script>
function factorial(n){//用来计算阶乘的函数if(n<=1)return n;
else return n*factorial(n-1);
}
document.write("<table>");//开始创建HTML表
document.write("<tr><th>n</th><th>n!</th></tr>");//输出表头
for(var i=1;i<=10;i++){//输出10行document.write("<tr><td>"+i+"</td><td>"+factorial(i)+"</td></tr>");
}
document.write("</table>");//表格结束
document.write("Generated at"+new Date());//输出时间戳
</script>


当脚本把文本传递给document.write()时,这个文本被添加到文档输入流中,HTML解析器会在当前位置创建一个文本节点,将文本插入这个文本节点后面。我们并不推荐使用document.write(),但在某些场景下它有着重要的用途。当HTML解析器遇到<script>元素时,它默认必须先执行脚本,然后再恢复文档的解析和渲染。这对于内联脚本没什么问题,但如果脚本源代码是一个由src属性指定的外部文件,这意味着脚本后面的文档部分在下载和执行脚本之前,都不会出现在浏览器中。

脚本的执行只在默认情况下是同步和阻塞的。<script>标签可以有defer和async属性,这(在支持它们的浏览器里)可以改变脚本的执行方式。这些都是布尔属性,没有值;只需要出现在<script>标签里即可。HTML5说这些属性只在和src属性联合使用时才有效,但有些浏览器还支持延迟的内联脚本:

<script defer src="deferred.js"></script>
<script async src="async.js"></script>


defer和async属性都像在告诉浏览器链接进来的脚本不会使用document.write(),也不会生成文档内容,因此浏览器可以在下载脚本时继续解析和渲染文档。defer属性使得浏览器延迟脚本的执行,直到文档的载入和解析完成,并可以操作。async属性使得浏览器可以尽快地执行脚本,而不用在下载脚本时阻塞文档解析。如果<script>标签同时有两个属性,同时支持两者的浏览器会遵从async属性并忽略defer属性。

注意,延迟的脚本会按它们在文档里的出现顺序执行。而异步脚本在它们载入后执行,这意味着它们可能会无序执行。

在撰写本书的时候,async和defer属性还没有广泛实现,它们只被一些优化建议所考虑。即便延迟和异步的脚本会同步执行,Web页面应该还可以正常工作。

甚至可以在不支持async属性的浏览器里,通过动态创建<script>元素并把它插入到文档中,来实现脚本的异步载入和执行。例13-4里的loadasync()函数完成了这个工作。第15章会介绍它使用的技术。

例13-4:异步载入并执行脚本

//异步载入并执行一个指定URL中的脚本
function loadasync(url){
var head=document.getElementsByTagName("head")[0];//找到<head>元素
var s=document.createElement("script");//创建一个<script>元素
s.src=url;//设置其src属性
head.appendChild(s);//将script元素插入head标签中
}

注意这个loadasync()函数会动态地载入脚本——脚本载入到文档中,成为正在执行的JavaScript程序的一部分,既不是通过Web页面内联包含,也不是来自Web页面的静态引用。

  • 事件驱动的JavaScript

例13-3里展示的古老的JavaScript程序是同步载入的程序:在页面载入时开始执行,生成一些输出,然后结束。这种类型的程序在今天已经不常见了。反之,我们通过注册事件处理程序函数来写程序。之后在注册的事件发生时异步调用这些函数。例如,想要为常用操作启用键盘快捷键的Web应用会为键盘事件注册事件处理程序。甚至非交互的程序也使用事件。假如想要写一个分析文档结构并自动生成文档内容的表格的程序。程序不需要用户输入事件的事件处理程序,但它还是会注册onload事件处理程序,这样就可以知道文档在什么时候载入完成并可以生成内容表格了。

事件都有名字,比如click、change、load、mouseover、keypress或readystatechange,指示发生的事件的通用类型。事件还有目标,它是一个对象,并且事件就是在它上面发生的。当我们谈论事件的时候,必须同时指定事件类型(名字)和目标:比如,一个单击事件发生在HTMLButtonElement对象上,或者一个readystatechange事件发生在XMLHttpRequest对象上。

如果想要程序响应一个事件,写一个函数,叫做“事件处理程序”、“事件监听器”或“回调”。然后注册这个函数,这样他就会在事件发生时调用它。正如前面提到的,这可以通过HTML属性来完成,但是我们不鼓励将JavaScript代码和HTML内容混淆在一起。反之,注册事件处理程序最简单的方法是把JavaScript函数赋值给目标对象的属性,类似这样的代码:

window.onload=function(){...};
document.getElementById("button1").onclick=function(){...};
function handleResponse(){...}
request.onreadystatechange=handleResponse;

注意,按照约定,事件处理程序的属性的名字是以"on"开始,后面跟着事件的名字。还要注意在上面的任何代码里没有函数调用:只是把函数本身赋值给这些属性。浏览器会在事件发生时执行调用。用事件进行异步编程会经常涉及嵌套函数,也经常要在函数的函数里定义函数。

对于大部分浏览器中的大部分事件来说,会把一个对象传递给事件处理程序作为参数,那个对象的属性提供了事件的详细信息。比如,传递给单击事件的对象,会有一个属性说明鼠标的哪个按钮被单击。(在IE里,这些事件信息被存储在全局event对象里,而不是传递给处理程序函数。)事件处理程序的返回值有时用来指示函数是否充分处理了事件,以及阻止浏览器执行它默认会进行的各种操作。

有些事件的目标是文档元素,它们会经常往上传递给文档树,这个过程叫做“冒泡”。例如,如果用户在<button>元素上单击鼠标,单击事件就会在按钮上触发。如果注册在按钮上的函数没有处理(并且冒泡停止)该事件,事件会冒泡到按钮嵌套的容器元素,这样,任何注册在容器元素上的单击事件都会调用。

如果需要为一个事件注册多个事件处理程序函数,或者如果想要写一个可以安全注册事件处理程序的代码模块,就算另一个模块已经为相同的目标上的相同的事件注册了一个处理程序,也需要用到另一种事件处理程序注册技术。大部分可以成为事件目标的对象都有一个叫做addEventListaner()的方法,允许注册多个监听器:

window.onload=function(){...};
document.getElementById("button1").onclick=function(){...};
function handleResponse(){...}
request.onreadystatechange=handleResponse;

注意这个函数的第一个参数是事件的名称。虽然addEventListener()已经标准化超过了十年,而微软目前只有在IE9里实现了它。在IE8以及之前的浏览器中,必须使用一个相似的方法,叫做attachEvent():

window.attachEvent("onload",function(){...});

客户端JavaScript程序还使用异步通知类型,这些类型往往不是事件。如果设置Window对象的onerror属性为一个函数,会在发生JavaScript错误(或其他未捕获的异常)时调用函数。还有,setTimeout()和setInterval()函数(这些是Window对象的方法,因此是客户端JavaScript的全局函数)会在指定的一段时间之后触发指定函数的调用。传递给setTimeout()的函数和真实事件处理程序的注册不同,它们通常叫做“回调逻辑”而不是“处理程序”,但它们和事件处理程序一样,也是异步的。

例13-5演示了setTimeout()、addEventListener()和attachEvent(),定义一个onload()函数注册在文档载入完成时执行的函数。on load()是非常有用的函数,我们会在本书后面的例子中用到它。

例13-5:onLoad(),当文档载入完成时调用一个函数

//注册函数f,当文档载入完成时执行这个函数f
//如果文档已经载入完成,尽快以异步方式执行它
function onLoad(f){
if(onLoad.loaded)//如果文档已经载入完成
window.setTimeout(f,0);//将f放入异步队列,并尽快执行它
else if(window.addEventListener)//注册事件的标准方法
window.addEventListener("load",f,false);
else if(window.attachEvent)//IE8以及更早的IE版本浏览器注册事件的方法
window.attachEvent("onload",f);
}
//给onLoad设置一个标志,用来指示文档是否载入完成
onLoad.loaded=false;//注册一个函数,当文档载入完成时设置这个标志
onLoad(function(){onLoad.loaded=true;});
  • 客户端JavaScript线程模型

JavaScript语言核心并不包含任何线程机制,并且客户端JavaScript传统上也没有定义任何线程机制。HTML5定义了一种作为后台线程的"WebWorker",但是客户端JavaScript还像严格的单线程一样工作。甚至当可能并发执行的时候,客户端JavaScript也不会知晓是否真的有并行逻辑的执行。

单线程执行是为了让编程更加简单。编写代码时可以确保两个事件处理程序不会同一时刻运行,操作文档内容时也不必担心会有其他线程试图同时修改文档,并且永远不需要在写JavaScript代码的时候担心锁、死锁和竞态条件(race condition)。

单线程执行意味着浏览器必须在脚本和事件句处理程序执行的时候停止响应用户输入。这为JavaScript程序员带来了负担,它意味着JavaScript脚本和事件处理程序不能运行太长时间。如果一个脚本执行计算密集的任务,它将会给文档载入带来延迟,而用户无法在脚本完成前看到文档内容。如果事件处理程序执行计算密集的任务,浏览器可能变得无法响应,可能会导致用户认为浏览器崩溃了[7]。

如果应用程序不得不执行太多的计算而导致明显的延迟,应该允许文档在执行这个计算之前完全载入,并确保能够告知用户计算正在进行并且浏览器没有挂起。如果可能将计算分解为离散的子任务,可以使用setTimeout()和setInterval()方法在后台运行子任务,同时更新一个进度指示器向用户显示反馈。

HTML5定义了一种并发的控制方式,叫做"Web worker"。Web worker是一个用来执行计算密集任务而不冻结用户界面的后台线程。运行在Web worker线程里的代码不能访问文档内容,不能和主线程或其他worker共享状态,只可以和主线程和其他worker通过异步事件进行通信,所以主线程不能检测并发性,并且Web worker不能修改JavaScript程序的基础单线程执行模型。

  • 客户端JavaScript时间线

我们已经看到了JavaScript程序从脚本执行阶段开始,然后切换到事件处理阶段。下面会更详细地解释了JavaScript程序执行的时间线。

1.Web浏览器创建Document对象,并且开始解析Web页面,解析HTML元素和它们的文本内容后添加Element对象和Text节点到文档中。在这个阶段document.readystate属性的值是"loading"。

2.当HTML解析器遇到没有async和defer属性的<script>元素时,它把这些元素添加到文档中,然后执行行内或外部脚本。这些脚本会同步执行,并且在脚本下载(如果需要)和执行时解析器会暂停。这样脚本就可以用document.write()来把文本插入到输入流中。解析器恢复时这些文本会成为文档的一部分。同步脚本经常简单定义函数和注册后面使用的注册事件处理程序,但它们可以遍历和操作文档树,因为在它们执行时已经存在了。这样,同步脚本可以看到它自己的<script>元素和它们之前的文档内容。

3.当解析器遇到设置了async属性的<script>元素时,它开始下载脚本文本,并继续解析文档。脚本会在它下载完成后尽快执行,但是解析器没有停下来等它下载。异步脚本禁止使用document.write()方法。它们可以看到自己的<script>元素和它之前的所有文档元素,并且可能或干脆不可能访问其他的文档内容。

4.当文档完成解析,document.readyState属性变成"interactive"。

5.所有有defer属性的脚本,会按它们在文档的里的出现顺序执行。异步脚本可能也会在这个时间执行。延迟脚本能访问完整的文档树,禁止使用document.write()方法。

6.浏览器在Document对象上触发DOMContentLoaded事件。这标志着程序执行从同步脚本执行阶段转换到了异步事件驱动阶段。但要注意,这时可能还有异步脚本没有执行完成。

7.这时,文档已经完全解析完成,但是浏览器可能还在等待其他内容载入,如图片。当所有这些内容完成载入时,并且所有异步脚本完成载入和执行,document.readyState属性改变为"complete",Web浏览器触发Window对象上的load事件。

8.从此刻起,会调用异步事件,以异步响应用户输入事件、网络事件、计时器过期等。

这是一条理想的时间线,但是所有浏览器都没有支持它的全部细节。所有浏览器普遍都支持load事件,都会触发它,它是决定文档完全载入并可以操作最通用的技术。DOMContentLoaded事件在load事件之前触发,当前所有浏览器都支持这个事件,除了IE之外,document.readyState属性在写本书时已被大部分浏览器实现,但是属性的值在浏览器之间有细微的差别。defer属性被所有当前版本的IE支持,但是现在还未被其他浏览器实现。async属性的支持在写本书时还不通用,但是例13-4里展示的异步脚本执行技术被当前所有当前浏览器支持。(但是,要注意用类似loadasync()函数动态载入脚本的能力让程序执行的脚本载入阶段和事件驱动阶段之间的界限更加模糊。)

这条时间线没有指定什么时候文档开始对用户可见或什么时候Web浏览器必须开始响应用户输入事件。这些是实现细节。对于很长的文档或非常慢的网络链接,Web浏览器理论上会渲染一部分文档,并且在所有脚本执行之前,就能允许用户开始和页面产生一些交互。这种情况下,用户输入事件可能在程序执行的事件驱动阶段开始之前触发n

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

相关文章

  1. (全程图解)Axure RP8 安装及使用教程

    一、Axure下载 中文版下载链接:https://pan.baidu.com/s/1dVom8lifgZ-kxtKWbFq-pQ 提取码:p5pc 二、Axure安装及汉化鼠标右击软件压缩包,选择解压到“AxureRP-Pro8.0-Chinese”打开 “AxureRP-Setup” 安装包点击“Next”将 “I Agree” 复选框勾选 ,然后点击“Next”选择安…...

    2024/4/28 2:44:08
  2. uni-app启动微信开发者工具

    运行uni-app在微信开发者工具下注意的问题: (1)在点击工具栏里的文件 -> 新建 -> 项目:(2)选择uni-app,输入工程名,如:hello-uniapp,点击创建,即可成功创建 uni-app。点击模板里的 Hello uni-app 即可体验官方示例。(3)下载微信开发者工具(4)运行uni-app …...

    2024/4/18 3:38:44
  3. 梦幻西游五虎将访谈系列:主策划小白

    网易《梦幻西游》作为民族网游的领头羊,一直牢牢占据着国内网游界NO.1的宝座,其品牌影响力早已超过游戏本身,这么一款代表国内最高水准的超人气国民网游是如何炼成的?又是一种什么样的精神力量在引导着《梦幻西游》不断创造奇迹?希望通过这次对《梦幻西游》背后的“梦幻团…...

    2024/4/26 15:50:30
  4. JS 提交表单

    1.document.forms.from.submit(); document.form.sumbit(); document.form.submit.click(); this.form.submit(); 以上几种形式的js表单提交在firefox浏览器下是不起作用的 2.必须遵循w3c标准: 1).获得form时应使用getElementById()方法 2).用.submit()方法提交表单 3).button…...

    2024/4/17 0:19:28
  5. Axure教程|Axure中图片处理技巧分享

    本人在日常使用Axure的过程中会大量得使用图片,而这些图片基本都来自于现有产品界面,即以截图方式插入Axure,由于Axure没有自带图片处理的功能,所以在如何整出一个比较满意的界面上,花了不少心思;但是,一来本人PS技艺不精,二来觉得这样倒来倒去麻烦,所以在不使用专业截…...

    2024/4/18 3:49:46
  6. CButtonST的学习

    宏的应用#define BTNST_USE_BCMENUclass CButtonST{#ifdef BTNST_USE_BCMENUDWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bWinXPStyle = TRUE, UINT nToolbarID = NULL, CSize sizeToolbarIcon = CSize(16, 16), COLORREF crToolbarBk = RGB(255, 0, 255), BOOL bR…...

    2024/4/18 3:38:56
  7. 浏览器集成教学 自定义浏览器

    本文翻译自http://msdn.microsoft.com/workshop/browser/hosting/wbcustomization.asp 本文的更新版本位于http://blog.csdn.net/jiangsheng/archive/2004/11/07/170742.aspx自定义浏览器 本教程提供了自定义浏览器控件的行为和外观的一些方法。你将看到高级的宿主接口,IDocH…...

    2024/4/18 14:53:35
  8. 微信开发者工具跨域问题

    如何不用将前端代码上传到远程服务器,也能够在本地进行远程调试?(解决跨域问题)解决1、修改路径将安装好的“微开发者工具”移动到没有中文路径的地址,然后将“微信开发者工具.exe” 更改为英文名字,然后发送到桌面快捷方式2、修改名称右击开发者工具快捷方式 -> 点击属…...

    2024/3/31 17:27:13
  9. 让C代码在浏览器中运行——WebAssembly入门介绍

    WebAssembly作为一种新兴的Web技术,相关的资料和社区还不够丰富,但其为web开发提供了一种崭新的思路和工作方式,未来是很有可能大放光彩的。使用WebAssembly,我们可以在浏览器中运行一些高性能、低级别的编程语言,可用它将大型的C和C++代码库比如游戏、物理引擎甚至是桌面…...

    2024/4/18 18:15:00
  10. 运营商造势 CP、SP发力手机游戏

    因3G而激发起来的无线互联网的朦胧愿景,正驱使几年前还是小众市场的手机游戏市场扩张为一个庞大的产业族群。尽管在商业模式、分成机制、平台开放、移动带宽等方面还存在诸多不确定性,但包括开发商、发行商、运营商、网络运营商、平台提供商、设备制造商在内,整个手机游戏产…...

    2024/4/19 8:40:54
  11. Axure RP 8 教程 - 查看原型

    Axure小白的福利又来了,本教程主要讲述查看原型的一系列基础操作以及相关设置。希望大家边学边操作,学习效果更佳哦。Axure RP 8 教程 - 查看原型1.快速预览查看原型快速原型的快捷键为“F5”。或者,单击快捷键功能中的预览图标进行预览。导航菜单“发布”-“预 览选项”中进…...

    2024/4/19 22:59:57
  12. 2019本科se第一次作业-博客初体验

    Deadline:2019-9-14 23:00,以博客发表日期为准 评分标准:按时交 - 有分(满分100分),超期提交本次作业为0分,2周内未完成倒扣本次作业分数 检查项目包括:完成任务1(10分)完成任务2(10分)完成任务3(70分)博文规范(行文清晰流畅)(10分)抄袭 - 倒扣本次作业分数 任…...

    2024/4/18 3:48:32
  13. 微信开发者工具无法打开界面的解决办法

    遇到的问题:最近几天没关电脑,发现微信开发者工具非常卡顿,于是重启了一下开发者工具,这一重启不要紧,连续好几次都打不开了,查看任务管理器,发现有一大堆微信开发者工具的进程,所以程序是应该运行了,但是界面没打开..上网查了一下,重启系统,重装开发者工具一般是能解决该问题的…...

    2024/4/18 3:37:32
  14. 最新浏览器速度测试

    各种浏览器FireFox,IE,Opera,Safari都发布了新版本,都号称自己的是最快的浏览器。我们来测试一下,看看到底谁启动最快,谁使用更少的内存,谁支持动态界面比如Gmail更快。我们使用了一些不那么科学,但是快速有效的方式来测试。测试系统 我们测试了各个浏览器的最新版本:…...

    2024/4/18 3:38:08
  15. 201671010415+金生芳+作业互评与改进报告

    任务一:从班级博客园的以下班级的软件工程第一次作业中各选一篇学生博文作业进行阅读并进行评论 对2019级春季计算机学院软件工程(罗杰)(北京航空航天大学)素朴拉斯软件工程第0次作业进行阅读并进行评论。 博客地址:https://www.cnblogs.com/zuoshun/p/10438399.html读完…...

    2024/4/19 11:16:37
  16. 解决【微信开发者工具】调试【企业微信】自建应用网页出现未绑定企业号开发者

    强调一下:微信开发者工具可以调试企业微信的自建应用,暂时还不支持调试第三方应用。调试第三方应用时同样也会提示未绑定企业号开发者。下面将针对如何调试自建应用出现的企业号未绑定问题。1、首先,将自己设置为企业微信的管理员。2、进入企业微信---我的企业---微工作台--…...

    2024/4/18 3:37:26
  17. Axure8.0基础教程(1-10)AxureRP8实战手册

    本文转载自小楼老师博客:http://www.iaxure.com/3768.html Axure新手必须掌握的56个基础操作。基础操作篇本篇包含56种常见的基础操作,初学者应在掌握本篇内容后再进行实战案例篇的学习,以免产生学习障碍。同时,建议具备一定基础的读者学习本篇中相对生疏的内容,并加以掌握…...

    2024/4/18 3:38:02
  18. 互联网人物点评之一

    互联网人物点评之一 文/飞天含雪 qq 543415188 一. 张朝阳----互联网界的"舞美师"--------搜狐公司董事局主席兼首席执行官 如果要在互联网界找出谁能与张朝阳的"作秀"能力想匹敌,实为难矣!清华大学的本科生涯,麻省理工的留学背景,或多或少都给予张朝阳…...

    2024/4/18 8:28:38
  19. Axure 7.0教程_小楼作品(十六)多值单变量的页面传值

    axure7.0教程_小楼作品(十六)多值单变量的页面传值作者: 小楼一夜听春语 分类: Axure7.0教程 时间: 2013-08-20 12:00 ė4,822 浏览数 62条评论今天这篇Axure教程,主要讲的是字符串函数的应用。在我们做一些Axure原型的时候,经常需要实现在两个或多个页面传递一些信息的效果…...

    2024/4/18 3:47:44
  20. 【2012年终总结】之一 opencv + ds采集摄像头视频 MFC点点滴滴

    1、MFC单文档多文档程序 不让MFC来更新菜单 1 在CMainFrame::CMainFrame中添加 2 3 m_bAutoMenuEnable = FALSE; 标题栏图标的更改 1 //cuihao, 标题栏图标; 2 CCameraMonitorApp *pApp = (CCameraMonitorApp*)AfxGetApp(); 3 HICON hIcon = pApp->LoadIcon(IDI_ICON3); 4 …...

    2024/4/12 0:27:09

最新文章

  1. 移动零 ----双指针

    题目链接 题目: 分析: 上述题目, 是将数组分块, 分为前半非零, 后半零, 这种数组分块题我们首先想到双指针 思路: 定义两个指针, 一个cur 一个dest, cur用来遍历数组, dest 指向分界处的第一个零位置, 将数组分块首先让cur 0; dest 0;cur 遍历数组, 如果cur 0, 那么cur…...

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

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

    2024/3/20 10:50:27
  3. CentOS 7查看磁盘空间

    CentOS如何查看硬盘大小? CentOS是一种基于Linux的操作系统,主要用于服务器端应用。在服务器管理中,硬盘大小是一个非常重要的指标,查看硬盘大小可以帮助系统管理员有效地管理硬盘空间和避免硬盘满了的情况。 方法一&#xff1a…...

    2024/4/24 14:59:47
  4. 人工智能产业应用--具身智能

    五、下一个浪潮 (一) 跳出缸中脑——虚实结合 在探索人工智能的边界时,“跳出缸中脑——虚实结合”这一概念提出了一个引人深思的视角,尤其是在具身智能的领域。具身智能是一种思想,强调智能体通过与其环境的直接物理互动来实现智能行为。然…...

    2024/4/22 16:29:21
  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. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

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

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

    %读入6幅图像(每一幅图像的大小是564*564) 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系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 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系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

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

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

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

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

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

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

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

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

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

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

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

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