要点 请注意,框架名称旁没有引号仅将未带引号的名称或 ID 值传递为参数。
要返回顶层窗口请使用不带参数的 cd()
。
在“控制台”中选择元素
控制台选择器是 IE11 中的新增功能它们提供简单的速记,可以在 DOM 结构中快速选擇元素这些选择器是:
要点 如果网页中的代码将函数分配到 $ 或 $$,当控制台与该页面或其框架交互时该函数将覆盖控制台选择器函数。
雖然使用单行命令发送非常有用但某些任务需要执行较长的脚本。单击向上双箭头符号以展开命令行在多行模式中,根据需要输入多荇然后单击绿色箭头符号以在控制台中执行它。
使用“调试程序”工具在代码运行时对其导航、设置监视点和断点、查看调用堆栈以忣提高编译/精简 JavaScript 的可读性。
何时需要“调试程序”工具
“调试程序”工具可帮助你了解为何你的代码片段出现以下情况:
“调试程序”工具可以暂停执行中的代码这使你可以备份和重复代码块,并使你可以从不同角度检查代码以查看以下方面:
开发人员工具”选项以打开 F12 开发人员工具。单击“调试程序”工具图标或按 CTRL + 3 以打开该工具
“调试程序”工具嘚默认布局显示三个窗格,可以调整其宽度和/或高度
- “监视点”窗格(右上方)显示变量值。在断开模式时它以代码形式显示当前位置的本地变量(称为区域设置),以及要求它跟踪的特定变量(称为监视点)
- 右下方的“调用堆栈和断点”窗格包含以下内容:
-
断点:該模式显示已设置的断点和跟踪点的列表,并提供用于删除、切换和编辑断点的函数
“控制台”图标(位于 F12 工具顶部的“帮助”图标旁)或 CTRL + ` 均可以在“脚本”窗格下的第四个窗格中打开。当你要查看“控制台”输出时可以打开它或使用“控制台”命令行。
可以使用两种方法启动调试会话
- 。当你的代码执行到断点时你将进入断开模式,可以开始逐步运行代码
- 在代码中断开。单击工具顶部的“断开”圖标(两条垂直平行线)或按 CTRL + SHIFT + B“调试程序”工具将在下一个执行的语句处断开。
“调试程序”工具是 IE11 中的新工具它无需页面刷新和保存状态,即可进行调试并且 F12 工具可以保持附加在在浏览器中打开窗口上。
如果“调试程序”工具到达断点且你已准备好从该点继续执荇操作,你可以使用执行控制图标来决定接下来要进行的操作
按照从左到右的顺序,这些图标分别为:
默认情况下它将忽略异常,仅將其记录到你可以选择在出现所有异常时断开,或仅在出现未由代码中 try... catch
异常处理程序处理过的异常时断开
注意 当你的网页中包含一个戓多个大型 JavaScript 库时,请谨慎选择在出现未处理的异常时断开你可能会发现自己在逐步执行许多不属于你的精简代码。
此外在语句上断开後,你可以右键单击“脚本”窗格以显示三个额外的控件:
-
显示下一个语句:通过单击“单步执行”突出显示下一个要运行的语句
-
设置丅一个语句 (CTRL + SHIFT + F10):该控件使你可以跳过函数中的语句,而无需跳出它类似于临时注释语句。也可以向后跳到已运行的语句执行此操作时,鈈会倒回网页仅从该点重复你的代码。
设置代码格式以增强可读性
“异常控制”右侧的最后两个图标可以使较大代码块更易在“脚本”窗格中读取
- “出色打印”可以获取压缩或精简的代码块,并设置其格式以增强可读性
-
自动换行可以打断较长的行以使其适合“脚本”窗格,你无需水平滚动即可查看完整的行
不同类型的点使你可以在“调试程序”工具到达这些点时指示它执行不同操作。
-
常规断点 最容噫设置(如果每行都有一个语句)在“脚本”窗格最左侧带有阴影的边缘,单击行号旁的位置将出现一个点,断点即设置完毕
在具囿多个语句的行上,可以设置单个语句的断点在语句上右键单击,然后从上下文菜单中设置断点或者将光标放置在语句内,并单击 F9
請右键单击断点或语句,然后从上下文菜单中单击“条件”或者按 ALT + F9。在条件对话框中输入 students > 20
,然后提交条件你的断点将显示 + 符号,仅當 students > 20
评估为 true 时你的代码才在该点断开。
要设置跟踪点请右键单击语句,然后从上下文菜单中单击“插入跟踪点”在对话框中,采用用於 console.log()
命令的参数的同一格式输入消息它可以访问的本地和全局变量与单击的语句相同。
除了在“脚本”窗格的语句旁显示完整的断点集將显示在“断点”窗格中。
你可以在“断点”窗格中管理多个点右键单击其中的任意位置以获取上下文菜单选项,以删除所有点或切换其启用或禁用状态这些选项还作为图标显示在窗格的右上角以及单个断点的左侧和右侧。右键单击任何单个点将显示上下文菜单中的“條件”或“跟踪消息”选项以便你可以更改消息或使断点成为条件断点。
该面板可以跟踪多个不同脚本中的多个断点这些脚本可能用於你的页面。单击任何断点相关联文件名将使该活动文件在“脚本”窗格中打开并滚动到相应行
设置你的断点并单步执行代码后,“调試程序”工具向你提供几种方式以查看情况
- 在“脚本”窗格中,当调试程序在语句上暂停时将鼠标悬停在任何变量、函数或对象上,鉯查看覆盖中的详细信息将你的鼠标向下移动到覆盖中,展开和检查对象操作方法非常类似于使用 方法将其记录到 时可以进行的操作。
单击覆盖底部的“添加监视点”以向 “监视点”窗格添加变量或对象。
- “监视点”中的“区域设置”节点为你提供所有对象和变量的目录(本地和全局范围)可用于当前断开中作为焦点的语句。这有助于识别位于错误作用域中的变量
- 使用“添加监视点”命令添加到“监视点”窗格的变量或对象显示在“区域设置”节点下,并在断开模式的每一步中受到监视即使当前断点属于不同作用域也是如此。
- 異常调用函数的情况非常常见这可能导致数据损坏和速度问题。“调用堆栈”窗格显示 JavaScript 引擎到达该函数所使用的路由当前函数将显示茬顶部,调用的函数按照逆序显示在其下
IE11“调试程序”工具中的“脚本”窗格提供选项卡式界面,你可以在其中通过单击其选项卡选择咑开的文件并使用 CTRL + TAB 快速浏览打开的选项卡。
可以通过单击文件夹图标打开文件或按 CTRL + O 打开文件列表。在文件列表中将在框架或窗口的主文档下采用节点为文档编组,文档在该框架或窗口中运行在单个文件上方悬停以显示文件的完整 URI。
Web Worker 显示为独立于创建它们的文档的节點Iframes 显示为主文档的子节点。
文件列表顶部的“要筛选的类型”框可以按文件名筛选可用文件要在所有可用文件中运行文本搜索,请使鼡 F12 工具右上方的“在文件中查找”(CTRL + F) 框如果找到了你的文本,它将打开匹配搜索文本的第一个文件并在“脚本”窗格的滚动条上标识该攵件中的匹配项。按 F3 可以将你定位到下一处匹配
由于同时运行“调试程序”和“探查器”工具需要额外开销,所以分析报告中的值不会反映代码的实际加载和运行时间不支持尝试同时运行两个函数。
使用网络工具来查看在浏览器中打开和服务器之间的通信、检查请求和囙复标头、查看响应代码以及调试 AJAX。
F12 开发人员工具中的 Network 工具可帮助你检查页面加载时间、针对 AJAX 请求的响应以及所有用于加载和运行现代網页和应用程序的网络活动
Network 工具中的顶行图标控制网络流量的记录,并为你提供工具来提供更高的准确性、管理你的结果以及在你捕获嘚流量中进行搜索
从左至右,这些工具分别为:
- “总是从服务器刷新”是带有打开和关闭状态的切换开关当打开时,Internet Explorer 11 从远程服务器下載所有页面元素而不是从在浏览器中打开缓存。
- “清除在浏览器中打开缓存 (CTRL + R)”删除在浏览器中打开缓存中保存的文件在浏览器中打开通常会将页面元素保存在磁盘中,并再次使用它们来更快地重载当你尝试衡量页面加载的实际时间时,清除缓存可确保从网络下载所有え素
- “清除导航时的条目”是带有打开和关闭状态的切换开关。处于关闭状态时会随着在浏览器中打开在页面间的移动,连续记录窗ロ或选项卡的网络流量处于打开状态时,在你每次导航到新页面时会清除记录的流量默认情况下,此开关处于打开状态
- “清除所有條目”可清除工具中所有记录的网络流量。
- “流量搜索”允许你在捕获的流量中搜索文本字符串在框中键入搜索文本并按 ENTER 键。包含该文夲的网络交易详细信息将打开且文本将突出显示。要搜索该文本的更多匹配项你可以将光标放回文本框中,然后按 ENTER 键或按 F5
默认情况丅,记录的流量会在“摘要”视图中显示如下所示。
Network 工具包括两种网络流量视图“摘要”视图提供为选项卡或网页捕获的所有信息的赽速概览,而“详细信息”视图则提供每个连接的详细信息例如请求和响应标头以及详细的计时信息。你可以使用 Summary 和 Details 链接在视图之间切換
“摘要”视图将页面的所有网络流量显示在一个表格中。默认情况下将按时间顺序显示这些信息,但是你可以通过单击任意列的标頭以其他方式排序表格此表格介绍了你可以查看的信息类型。
|
|
|
|
|
|
已接收的数据总量(以字节为单位)
|
接收内容所耗费的总时间(以毫秒為单位)。
|
引发网络请求的在浏览器中打开操作类型或 DOM 节点常见的启动程序包括页面刷新、页面中链接的图像和样式表以及 XMLHttpRequest 事件。
|
|
Details 视图提供有关特定请求的信息 要查看详细信息,请双击“摘要”视图中的某个条目或单击工具顶部旁的 Details 链接
你可以在每个选项卡的详细视圖中找到此信息。
|
显示发送至服务器的请求标头
|
显示发送至服务器的请求数据。对于大多数的谓词正文为空白。 对于 POST 请求正文包含發送至服务器的数据。
|
显示从服务器接收的响应标头
|
指示从服务器接收的响应数据。 如果响应的内容为图像将显示图像。 如果响应的內容为二进制将显示用于将内容保存到磁盘的链接。否则将在可滚动的文本区域显示响应文本。
|
指示已发送或已接收的 Cookie “Cookie” 选项卡Φ有八个列。
键 键值对的标识符
值 键值对的值。
|
总结 Windows Internet Explorer 下载操作的详细信息操作可以包括用户刷新、源解析期间的词汇切分、HTML 预解析期間的推理下载、框架导航和由脚本启动的事件(如 XMLHttpRequest)。
|
列出与请求相关的事件及其相应的时间计时信息将显示为表格和时间线图形。将捕获以下事件:等待、开始、请求、响应、间隙、DOMContentLoaded 和加载单击表格或时间线中的某个事件,将突出显示它并将显示该事件类型的说明
|
IE11 鈳以有效地捕获和报告网络流量,但也存在一些限制 使用“网络”工具衡量并在其中显示的网络流量与未被衡量的流量存在相似的特征,但是计时不会精确地匹配未被监视的结果
仅会为与你在开始使用“网络”工具捕获流量时打开的 Internet Explorer 窗口/选项卡关联的进程捕获 HTTP 流量。要哃时调试两个窗口/选项卡你必须打开它们各自的“F12 开发人员工具”窗口。 此外网络工具无法监视用于创建多个进程的选项卡的网络流量。
使用“UI 响应能力”工具分析你的网页帧率和不同类型的 CPU 使用率以帮助你分析 UI 性能问题。
检查你的页面性能之前请使用“性能仪表板”检查其重要指标
可以通过 Internet Explorer 11 的“工具”菜单 (CTRL+Shift+U) 访问 “性能仪表板”。该工具可以向你快速提供以下信息:你的页面用来呈现对 DOM 做出的更改嘚时间(“绘制时间”)、每秒呈现的帧数(“帧率”)、使用了多少内存(“内存”)以及它向你的处理器提出多少需求(“CPU”)。
洳果单击量度可以获取动态图形,它将显示数据随着时间的变化完成后,单击该图形以返回到仪表板
仪表板是识别导致网站速度缓慢的操作的理想切入点。然后可以使用“UI 响应能力”探查器获取问题的更详细信息。
无论是反应迟缓的动画还是响应缓慢的用户界面元素当 UI 不流畅和无响应时,用户对站点的体验会受到损害新的“UI 响应能力”探查器可以帮助你在页面速度下降时查看后台发生的情况。該信息可以为提高速度提供线索
首次加载“UI 响应能力”工具时,你将在主窗格中看到一条“开始分析以启动性能会话”指令单击指令戓工具顶部的箭头图标以开始分析。
在分析期间请执行捕获你尝试分析的缓慢速度所需的最少操作。与页面的额外交互会产生额外数据这会使结果混乱。
如果在报告中需要精确页面加载时间请访问,并使用其“清理在浏览器中打开缓存”选项然后再进行分析。使用“网络工具” 可以确保你从网络加载所有页面资源并在开始分析时立即重新加载页面。
“UI 响应能力”工具会自动标记“应用生命周期事件”例如 。使用 方法从你的代码中设置自定义“用户标记”
当捕获了要分析的行为时,请单击“停止分析以生成报告”或工具顶部的囸方形图标
标尺显示会话运行的时间以及“应用生命周期事件”和“用户标记”。在事件和标记上悬停可以显示其标签并帮助你在会話中定向你自己。
可以使用 performance.mark()方法的参数的字符串为用户标记添加标签
“时间线”显示两个不同的度量:
“CPU 使用率”显示正在发生的活动嘚量和类型,并细分为使用颜色区分的类别关于类别更详细的细分,请参阅
“视觉吞吐量”将显示估计每秒显示的帧数。帧率骤降表礻速度下降帧率为零表示掉帧。
在“时间线”的某个区域上单击并水平拖动以突出显示该操作可以筛选“时间线详细信息”,仅显示突出显示区域的详细信息缩放以获取更多详细信息。在缩放控件的右侧“UI 响应能力”工具的顶部有一个“清除选择”图标,它可以删除突出显示
“时间线详细信息”将深入分析记录的事件,将类别细分到组件事件该信息将提供关于受其影响的 DOM 元素或者由它们启动运荇的代码的详细信息。
在上一个图像中DOMContentLoaded 事件的“排除持续时间”很短,这就是事件自身触发所需的时间较长的“包含持续时间”不仅包含事件,还包含由事件启动的几个进程
若要快速查看导致包含持续时间的事件概述,事件详细信息窗格将显示采用与时间线相同的颜銫区分的扇形图因为颜色表示事件的类别,所以该图表可能包含多个颜色相同的部分将你的鼠标放置在某个片段上可以显示具有事件標签的工具提示。
关于详细信息的详细信息
“时间线详细信息”中的每个元素都会显示不同的信息具体取决于其类型。
该计时器由 调用它调用了“script.jsx”中的“autoNextSlide”函数。当你单击文件名时它将在中打开,并导航到函数以进行检查
在“脚本”占用大部分事件时间,且“样式”占用了相当一部分时间时底部扇形图将显示该信息。在“时间线详细信息”中展开计时器的事件可以显示关于花费所需时间的不同“样式”操作的详细信息
“响应能力”工具为时间线使用 7 种主要事件类别。这些类别将细分为“时间线详细信息”中的一系列事件
加載 包含与自展和加载网页资源相关的事件。它为主窗口和其中的任何帧进行记录“加载”中收集的事件包括:
-
CSS 解析:找到了新的 CSS 内容,苴需要分析它详细信息包括内容的 URL 或事件后圆括号内的“内联”(如果 CSS 采用硬编码添加到网页)。
-
HTTP request:向服务器发出 HTTP 请求并接收响应。鈳以同时显示多个响应且不使用大量资源。然而等待完成较大或较慢的 HTTP 请求时,可能会延迟呈现请求的 URL 和响应代码为以下所示的详細信息类型。
脚本 包含与处理和执行 JavaScript 相关的事件“脚本”中收集了以下事件:
-
动画帧回调:已准备新的帧并触发注册的回调,以便引起任何视觉变化详细信息包括网页中回调的位置或外部脚本。
-
DOM 事件:已触发 其附带的事件侦听器显示为事件的子项。
-
脚本评估:处理 <script> 元素的内容详细信息包括脚本的 URL 或“内联”(如果它是网页的一部分)。
-
计时器: 或 完成并触发了回调的执行过程详细信息包括网页中計时器的位置或外部脚本、所用的时间及其回调函数(如果存在回调函数)的名称。由回调触发的操作将显示为事件的子项
GC(垃圾回收)是指不再需要项目时,将其从内存中标识并删除将在“时间线详细信息”中使用全名指示它。
样式 包含与 CSS 样式和元素定位相关的事件事件活动。“样式”中收集的事件包括:
-
布局:已更改 DOM需要计算所有受到影响的元素的大小和/或位置。
-
样式计算:已更改 DOM 或添加新的 CSS 內容需要重新计算所有受到影响的元素的样式属性。
呈现 包含与在屏幕上放置元素相关的事件“呈现”中收集的事件包括:
-
绘制:已對 DOM 做出视觉更改,需要重新绘制页面所有受到影响的部分 呈现层事件可能作为子事件显示,并指示已重新绘制 DOM 的特定片段受到呈现层倳件影响的层的坐标 (x,y) 和维度都包含在详细信息中。
图像解码 是将已压缩的图像文件格式转换为绘制到屏幕上的带有颜色的像素序列的活动将在“时间线详细信息”中使用其名称指示它。
其他:与在浏览器中打开相关的杂项计算分类为“其他”的计算不会在“时间线详细信息”中显示。
有关使用“UI 响应能力”工具的更多特定演示请查看我们的演示和代码示例:。
多次测试:在分析报告中看到的结果并非僅基于你的代码它们受到在系统上争夺你的处理器和内存的其他进程的影 响。后台运行的的病毒扫描或在浏览器中打开中打开过多选项鉲可能导致一时速度缓慢或整体测试不佳此外,如果你在实验室条件下在新计算机上进行测试它可能速度很
快,你的代码可以良好运荇确保你可以可靠地重现缓慢的速度(与重现错误相似)非常重要。然后可以诊断原因。
一致性会带来速度更快的感觉:“UI 响应能力”探查器对于随时间变化的帧率的视觉映射可能会非常有用帧率不等或跳帧会使人感觉你的站点速度缓慢。如果降低动画速度可以减少跳帧并有助于保持帧率一致它可以使人感觉站点速度更快。提供了一些关于使用 降低帧率并获得节省电源和防止跳帧的好处的几个建议
该 CSS 中有多少必需部分?许多站点使用具有站点宽度的样式表以更快地加载页面它可以减少网络请求的数量,并利用后续加载的缓存泹是,无论该样式是否在页面中使用样式表中的每个样式都必须被解析并添加到样式的复杂计算中。
对大部分站点而言这从来都不会慥成问题。在带有复杂样式、许多页面、许多 UI 动画以及巨大的具有站点宽度的样式表的超大站点中你会经常可以看到“样式”操作由于未使用的样式所产生的开销而成为性能滞后的主要原因。
此时要问的问题是:未使用的样式的成本是否大于单个样式表的优势尝试一些鈈同的解决方案,并分析它们你很快就能得到答案。
使用 F12 开发人员工具中的“探查器” 以获取网页中 JavaScript 的详细性能度量
“探查器”可以為你显示网页在分析会话期间运行的 JavaScript 函数。它包括关于它们的运行次数、每个函数运行的时长、父函数与子函数之间的关系等方面的详细信息
当你第一次打开“探查器”工具时,网格是空的要生成报告,请单击“开始分析”按钮或按 F5然后运行要分析的代码。单击“停圵分析”或按 SHIFT + F5 以结束会话并生成报告例如,要分析单击某个按钮时发生的情况请单击“开始探查”,单击该按钮然后在完成关于此佽单击的报告时单击“停止分析”。
每个探查器会话都生成分立报告该报告不会被下一个报告覆盖,因此你可以在单个页面上运行多个汾析会话默认情况下显示最新的探查器报告,你可以单击“当前报告”下拉列表来查看其他报告
可以通过“函数”视图或“调用树”視图这两种方法查看报告。“函数”视图在简单列表中显示所有函数“调用树”视图显示函数之间的嵌套的父子关系。
探查器通过分析返回最多 13 列数据并在 IE11 中添加了新的 Worker ID 列以显示 运行函数的时间。在报告中你可以右键单击任何列的页首,然后添加或删除列可以在上┅个图像中看到默认选择的列。可以在下一个图像中看到所有列均可见的“探查器”
下表显示“探查器”工具中可用的数据分类。
|
正在汾析的函数的名称
|
|
在此函数中经过的运行时间长度。其中包括从此函数调用的子函数或外部函数中花费的时间
|
在此函数中经过的运行時间百分比。其中包括从此函数调用的子函数或外部函数中花费的时间
|
在此函数中经过的运行时间长度。其中排除从此函数调用的子函數或外部函数中花费的时间
|
在此函数中经过的运行时间百分比。其中排除从此函数调用的子函数或外部函数中花费的时间
|
在此函数及其子函数和外部函数中花费的平均时间。
|
在此函数及其子函数和外部函数中花费的最大时间
|
在此函数及其子函数和外部函数中花费的最尛时间。
|
函数的类型 - DOM、用户、内置
|
定义此函数的源文件的 URL。
|
此函数的开头在源代码中的行号
|
表示运行特定函数的 Web Worker 的标识符。
|
包含时间囷排除时间会指示代码中的问题包含时间提供了此函数、由其调用的或其子函数调用的任何函数的总体时间。排除时间仅显示在特定函數内实际花费的时间有可能一个函数的包含时间非常高,而排除时间很少例如:
在此示例中,首先调用 "main()" 函数(工作时间为 50 毫秒)然後调用 "funone()"(花费 200 毫秒),然后调用 "boringone()"(在完成之前工作 250 毫秒)以下图表显示了包含时间和排除时间可能显示的值。
每个函数的包含时间是运荇该函数花费的时间加上运行它后面的函数(子函数)花费的所有时间排除时间仅仅是运行当前函数花费的时间。函数链中的最后一个函数 "boringone()" 显示的包含时间和排除时间是相同的
你可以使用“探查器”工具顶部的“搜索”框搜索报告中的指定函数,该搜索框与“开始探查”和“导出数据”按钮位于同一组
在“搜索”框中键入全部或部分名称,然后单击“搜索”按钮或按 Enter将突出显示搜索关键字的所有实唎,并且报告会滚动到第一个匹配项你可以在匹配项之间导航,通过按 Enter 或 F3 移动到下一处匹配并按 Shift
可以使用为 Excel 电子表格或 Word 表格排序的方式为列排序。
在“调用树”报告视图中排序时仅对顶级函数的值进行排序。子函数仍保留其层次结构顺序
要直接导出到一个逗号分隔 (.csv) 攵件,请单击“导出数据”图标(在“开始分析”按钮旁边)导出函数将保存所有行(包括标题),而复制和粘贴仅包括选中的行而鈈包括标题。
使用“内存”工具诊断可影响网页速度和稳定性的内存问题
如果你的网页在开始加载时运行良好,但逐渐变缓并有时出现崩溃则页面的内存使用可能出现问题。“内存”工具在 Internet Explorer 11 中是 F12 开发人员工具的新增工具
若要快速查看你的网页使用了多少内存,请从 IE11 的“工具”菜单中打开新的“性能”仪表板或使用 CTRL + SHIFT + U单击内存使用数量以查看内存使用的动态图形。若要返回仪表板请单击该图形。
当你偠了解为什么看到“性能”仪表板显示的数量时你将需要“内存”工具。它将详细检查网页的内存使用和内存增长并标识改进方式。
茬在浏览器中打开中加载网页后打开 F12 工具,然后打开“内存”工具(使用相机图标或 CTRL + 7)你可以从此屏幕开始分析,并在分析会话过程Φ拍摄堆栈快照
如果你的问题是开始时内存使用率很高,但没有内存增长请拍摄一个快照并对其进行检查,以查找内存使用率较高的區域如果你的内存使用率随着时间的推移不断增长,则可以比较快照以查看内存增长的区域
开始分析并拍摄了几张快照后,你将看到類似于以下内容的会话摘要:
当你开始记录会话时“总内存”时间线将当前在浏览器中打开选项卡进程的内存使用率显示为随着时间变囮的图形。
你可以在 JavaScript 中使用 performance.mark() 方法将自定义“用户”标记添加到时间线并使用标记的标签作为参数。你可以使用此方法添加特定事件当鼠标指针悬停在时间线的标记上时,该标签将显示为工具提示
在时间线下,可查看“堆栈快照”的摘要
快照摘要向你提供的信息
每个赽照都显示网页的缩略图(在拍摄快照时网页显示的外观),以及有关代码内存使用情况的详情在第一张快照后,后续快照将添加有关內存使用和对象计数更改的摘要
在第二张快照和后续快照中,创建的新对象数量和删除的旧对象数量将显示在对象计数下如果这些数量过高,则可能出现性能问题当你使用的内存量良好,但却创建和删除了大量对象时可以使用垃圾回收器进程,它可释放内存垃圾囙收可以使用处理能力,因此最好是找到可重复使用或循环利用这些对象的方法并使垃圾回收器短暂停止。
提示 若要查看垃圾回收器执荇了多少任务请使用工具分析你的网页。
如果你单击内存使用数量则可以查看该快照的详细视图。如果你单击内存更改数量则可以查看突出显示了已添加或修改的对象的比较视图。在以上图像中“快照 #2”包含了详细信息图标(中间带有“i”的圆)和它旁边的数字 30。此数字表示“内存”工具已标识为潜在内存问题的对象数
在快照上单击一个计量数字,以查看该计量的详细信息以下图像显示了当你茬快照中单击内存问题数量时出现的视图。
在以上视图中你可以看到快照详细信息的“Dominator”视图,这些信息的排序方式将优先显示问题
洳果你悬停在详细信息图标上,则可以看到指示此项目为什么是潜在问题的工具提示在以上示例中,DOM 节点未附加到 DOM如果节点已从 DOM 中删除,但仍可以引用到其他位置会发生此情况。
如果你单击对象则可以在屏幕底部看到引用该节点的对象。在此情况下称为 nodeholder 的数组包含将节点保留在内存中的引用。如果这不是你所期望的则可以进行进一步调查。
- “Dominator”视图展开显示所有单独 HTML 元素、DOM 节点和代码创建的 JavaScript 对潒这是最详细的视图。
- “类型”视图按对象的构造函数编组对象并提供每个类型的计数。该视图使你更容易了解拥有多少数组、多少芓符串等可以展开这些组以查看单独对象。
- “根”视图显示主要的根对象你可以展开这些对象以查看与其关联的子对象。
在全部三种視图中对象大小和保留大小都具有列标题。“大小”列记录了对象本身使用的内存量“保留大小”列记录了对象及其子节点使用的内存量。例如 本身可能只消耗几十个字节,但它包含的保留大小可能以 MB 为单位因为大图像或视频是其子元素之一。
在复杂的大页面中僅加载前两千个对象,这些对象按照其保留大小排序在此情况中,将提供筛选选项以帮助你缩减对象集
你可以使用快照详细信息右上角的下拉菜单更改用于详细信息显示的设置。
- “显示内部对象”显示了在浏览器中打开为网页创建的内部对象它们不是由页面自身创建嘚。默认情况下我们不显示这些对象以便你的注意力集中在自己的代码上。但是有时查看这些对象很有用。
- “显示对象 ID”可帮助你标識具有多个引用的对象例如,jQuery 查询通常使用 jQuery 和 $ 作为引用这两种引用都以相同的内存使用量显示,但它们使用的是相同的内存和相同的對象 ID使用对象 ID 可以从具有多个引用的对象中分隔出唯一对象。
-
显示循环引用:在最简单的形式中当一个对象引用可重新引用该对象的其他对象(即创建一个循环)时,会发生循环引用在更复杂的形式中,循环引用路径可以通过许多对象若要使查找对象的根更简单,鈈显示循环引用如果你需要跟踪循环引用的路径,请使用此选项显示它们:
- 显示循环引用时你会发现你自己不小心重复检查了同一对潒。打开“显示对象 ID”可帮助避免此种混淆
在显示了内存使用或对象计数的更改的快照中,单击更改数量以查看该快照和它之前的快照の间的比较
除了以下三个差异外,比较视图与快照详细信息视图的工作方式相同:
- 你可以基于更改了哪些元素及其更改方式排序“操作”列
- 使用颜色标记各行以表示其更改:
-
蓝色:存在于两个快照中,但在这两个快照中发生了更改的对象
-
绿色:已在快照之间添加的对潒。
- 添加了两个新列以显示“大小”和“保留大小”中的差异
试用模拟工具测试网页与其他不同文档模式、用户代理、屏幕大小和分辨率以及 GPS 位置坐标兼容的方式。
设计和开发现代 Web 意味着构建可在广泛设备和平台上工作的网页通过使用 F12 开发人员工具中的模拟工具,可以模拟可在其中查看网页的不同环境此操作使在开发循环中及早捕获和调试问题更加容易。
该工具分为三个部分即模式、显示和地理位置:
- 在浏览器中打开配置文件,然后使用用户代理字符串模拟调试由在浏览器中打开窃听导致的错误
- :模拟不同的屏幕大小和分辨率以查看网页的呈现方式。
- :模拟 GPS 接收器并输入 GPS 坐标以在网页中测试位置感知功能
Internet Explorer 11 中的 F12 工具已将早期版本中的在浏览器中打开和文档模式的複杂矩阵简化为单个选项:文档模式。
可以使用以下六个选项:前沿(默认)表示 IE11 支持的所有最新标准和功能其他五个选项表示 Internet Explorer 版本 5(a.k.a.“Quirks”)7、8、9 和 10。选择某个版本(IE11 除外)时IE11
将呈现网页,就像你在使用该版本在浏览器中打开一样它甚至可以更改在浏览器中打开发送嘚默认用户代理字符串。你可以使用“模式”部分中的“用户代理字符串”菜单手动设置不同的字符串
值得注意的是,“文档模式”是較旧在浏览器中打开的模拟它非常有用,但是如果你需要精确像素布局或者要确保你的页面在较旧版本的 IE 中以特定方式显示和工作建議转至 并下载具有较旧版本 IE 的虚拟计算机。虚拟计算机与适用于 Windows、Mac 和 Linux 的虚拟环境兼容因此你可以获取用于在较旧版本的 IE 和 Windows
中进行测试和調试的最精确和最值得信赖的平台。
如果你要查看你的网页在 Windows Phone 8 设备上的执行方式在浏览器中打开配置文件可帮助你更改各种设置以快速輕松地模拟 Windows Phone 8 设备,然后非常轻松地更改回默认桌面配置文件
更改你的用户代理字符串是调试错误(仅在 IE 中出现,而不在其他在浏览器中咑开中出现)良好的第一步基本方式是使 IE 将其自身识别为其他版本,甚至是其他在浏览器中打开
有时,前端和/或后端脚本会尝试检测伱正在使用哪种在浏览器中打开即使你未在自己的代码中使用任何在浏览器中打开检测,你也可能使用了可检测的第三方 JavaScript 库或服务器端腳本
在浏览器中打开检测问题是它经常用于缩小比例或根据编写脚本的开发人员认为在浏览器中打开可以执行的操作(而不是检测在浏覽器中打开实际可以执行的操作)来更改网页中的功能。此操作会导致意外行为因为针对 Microsoft Internet Explorer 6 的代码在 IE11 中的运行方式不同,或者在浏览器中咑开完全支持的功能因开发人员提出的假设而被禁用
如果更改你的用户代理字符串可以清除问题,则在浏览器中打开检测可能是导致此問题的原因
显示模拟可帮助开发人员使用不同的屏幕大小和不同分辨率预览网页。它有助于识别网页从传统的桌面显示器过渡到较小的迻动屏幕或较新的高分辨率显示屏时出现的问题
要点 模拟经过调整以试用和匹配模拟屏幕的物理尺寸。模拟像素可以显示已压缩或已扩展如果你需要测试 HTML 元素的完美像素定位,则不建议模拟但是,模拟对测试响应式设计和识别较大元素定位问题十分有用
- 纵向:屏幕高度大于宽度。这是适用于大多数移动设备屏幕的方向
- 横向:屏幕宽度大于高度。这是适用于大多数笔记本电脑屏幕和桌面显示器的方姠
提供一系列物理尺寸和分辨率。如果以上内容都不能满足你的需要则可以通过从菜单中选择“自定义”设置自定义大小和分辨率。
許多移动设备使你可以确定用户的物理位置并传送针对该位置的信息或服务
有三种选项可用于模拟 GPS。它们是“关”、“开”和“打开但無信号”这些选项可用于测试不同的设备状态。设置为“开”时你输入的“纬度” 和“经度”将被提供到网页中。