如何使用浏览器开发工具调试 PWA(Progressive Web Apps) ? 本教程说明了Chrome和Firefox的开发工具展示了什么样的工具,用于帮助用户调试PWA。...清单提供了很多应用被安装到到设备该如何表现的细节说明。任何的错误定义清单将会报告问题。 ? 清单中可以看到应用的名字(首屏上的简短名字),图表预览,以及一些展现的细节。...绕过网络可以完全关闭Service Worker启用的缓存。 当您希望从网络直接访问时,这会阻止应用程序使用缓存的资源。调试时也非常有用。...通过Google Chrome缓存存储演示项目可以更清楚看到具发生了什么,当把内容添加到缓存时。 ? 首先,先不使用缓存。 ? 按住创建WNDT62缓存按钮触发缓存的创建: ?...当加载Service Workers使用Cache API缓存的资源时,DevTools的网络面板显示为来自Service Workers的: ? Firefox如何?
对用户体验的提升 虽然一些敏感数据要避免使用,但我们依然可以通过WebStorage改善Web应用程序的用户体验 例如,用户在填写表单,但因为一些原因用户关闭了选项卡/窗口,但表单LocalStorage...,自动恢复之前填写的内容,所以这里不能使用SessionStorage作为存储对象,因为它会在窗口关闭时自动清除。...由于LocalStorage不会过期的特性,用户在任何使用打开页面时都可以使用存储对象中的内容,而如果用户想删除LocalStorage数据也很简单,清除浏览器缓存内容即可。...监听LocalStorage变化 LocalStorage是一个可以用作本地持久化存储的对象,我们可以向其中添加数据存储,同样它在用户操作的情况下发生变化时,我们也需要能监听到,当它发生变化时,会触发storage...事件,我们可以在window上监听到这个事件,从而完成一些逻辑操作。
而页面渲染完成后,浏览器如何响应页面操作事件也进行了深入的介绍。良心推荐!...浏览器页面行为不当、浏览器错误、浏览器插件错误都会引起整个浏览器或当前运行的选项卡关闭。...及处理Web浏览器的不可见特权部分,例如网络请求和文件访问 渲染:控制显示网站的选项卡内的任何内容 插件:控制网站使用的任何插件,例如flash。 GPU:独立于其他进程处理GPU任务。...如有设置导航或关闭选项卡时发出警报“离开这个网站吗?” 包含JavaScript代码的选项卡内的所有内容都由渲染进程处理。...查找event.target 当合成器线程向主线程发送输入事件时,首先要运行的是命中测试以查找事件目标。命中测试使用在渲染过程中生成的绘制记录数据来找出事件发生的点坐标下面的内容。
所以,今天我们来深入研究一下,如何优雅的进行数据追踪。也就是如何高效的在浏览器中进行断点的跟踪。 好了,天不早了,干点正事哇。...是一个在浏览器开发者工具中使用的 JavaScript 方法,用于「监控指定元素上特定类型的事件」。...❝一旦使用 monitorEvents 监控了某个元素上的事件,当该元素上触发相应类型的事件时,浏览器会在控制台中打印相应的事件信息,包括事件类型、事件目标等。...并且这是一种「子上而下」的搜索方式。我们可以通过调用栈就能把调用路线很清晰的把握住。 5. 事件监听器断点 当我们希望在事件被触发后运行的事件监听器代码上暂停时,请使用事件监听器断点。...例如: 其实,我们可以使用copy()API 将浏览器中的特定信息「直接复制到剪贴板,而不会有任何字符串截断」。
最后,当某个特定节点上注册的所有事件处理器按其顺序全部执行完毕后,窗口对象的事件处理器才有机会响应事件。 事件处理器任何时候都可以调用事件对象的stopPropagation方法,阻止事件进一步传播。...,但当持续按下某个按键时,会循环触发该事件。...第 18 章将展示如何实现。 指针事件 目前有两种广泛使用的方式,用于指向屏幕上的东西:鼠标(包括类似鼠标的设备,如触摸板和轨迹球)和触摸屏。 它们产生不同类型的事件。...实际上,事件处理器是在进行滚动之后才触发的。 焦点事件 当元素获得焦点时,浏览器会触发其上的focus事件。当失去焦点时,元素会获得blur事件。 与前文讨论的事件不同,这两个事件不会传播。...类似于焦点事件,装载事件是不会传播的。 当页面关闭或跳转(比如跳转到一个链接)时,会触发beforeunload事件。该事件用于防止用户突然关闭文档而丢失工作结果。
选项卡的会话历史记录将更新,因此后退/前进按钮将可以逐步浏览刚导航到的站点。为了便于在关闭选项卡或窗口时能够对选项卡/会话进行还原,会话的历史记录将被存储在磁盘上。 ?...一旦渲染器进程“完成”渲染,它就会将一个IPC发送回浏览器进程(这发生在所有onload事件触发了页面中的所有帧并完成执行之后)。 此时,UI线程会停止选项卡上的加载指示器。...当你尝试重新导航或关闭选项卡时,beforeunload可以创建“要离开这个网站吗?” 警告。...) 以及如何使用 页面生命周期 API (https://developers.google.com/web/updates/2018/07/page-lifecycle-api) 挂钩事件。...图12:浏览器进程中的UI线程启动渲染器进程,在并行启动网络请求的同时处理Service Worker 总结 在本文中,我们研究了导航过程中发生的事情,以及响应头和客户端JavaScript等Web应用代码是如何与浏览器交互的
就像 cookies,你可以选择将保持数据(维持),即使你已经离开了该网站,关闭了浏览器选项卡,退出了浏览器或关闭了计算机。...当浏览器窗口关闭时,数据将会被删除。会话存储是专门用于同一个用户在不同的浏览器中使用相同的网站同时进行多个事务的情况。...用户通过浏览器主动发起请求,并且等待服务器的应答。为了检查某个特定的网页上是否有更新,用户需要通过点击浏览器上更新/重新登录按钮来向服务器发送新的请求。...当信息到达时,HTML 服务器发送事件(SSE)使得服务器能够将信息发送(推送)到客户端,避免了服务器持续推送的需要。这也使得网站在不需要任何第三方插件的情况下,能够为客户端提供推送服务。...EventSource 对象,然后规定发送更新的页面的 URL(本例中是 "demo_sse.php") 每接收到一次更新,就会发生 onmessage 事件 当 onmessage 事件发生时,把已接收的数据推入
它通常分为 localStorage 和 sessionStorage,两者之间的主要区别是浏览器存储数据的时间。使用 sessionStorage,「一旦会话结束或浏览器关闭,数据就会被删除」。...你也可以存储网页的状态,即使 HTTP 是无状态的。假设你只想使用某个站点的黑暗主题。使用 localStorage,你不必每次重新打开浏览器并访问站点时都更改主题。...「对开发人员友好的 API」:该 API 可以方便地「访问」和「添加」 localStorage 中的数据。在任何浏览器上,都可以从 Window 对象访问 localStorage 函数。...3.4 标签间同步数据 使用 localStorage,用户可以在浏览器选项卡上打开一个计时器网站,启动计时器,然后打开同一网站的另一个选项卡,在两个选项卡之间同步计时器。...一个是「持久性」:存储在 localStorage 中的数据在会话中持续存在。打开新选项卡、访问新域或关闭浏览器都不会清除 localStorage。
持久化 web 应用程序的存储方法可以根据数据持久化的时间段进行划分: 会话持久化: 该类别中的数据仅在单个 Web 会话或浏览器选项卡保持激活状态时才持久,具有会话持久性的存储机制的一个示例是 Session...localStorage 类似 sessionStorage,其区别在于:存储在 localStorage 的数据可以长期保留;而当页面会话结束——也就是说当页面被关闭时,存储在 sessionStorage...HTTP Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。...你可以对对象的某个属性创建索引(index)以实现快速查询和列举排序。key可以是二进制对象。 IndexedDB 是事务模式的数据库 — 任何操作都发生在事务(transaction)中。...当操作完成时,数据库会以DOM事件的方式通知你,同时事件的类型会告诉你这个操作是否成功完成。这个过程听起来会有些复杂,但是里面是有明智的原因的。这个和 XMLHttpRequest 请求是类似的。
Web浏览器和Web服务器之间是通过HTTP协议相互通信的。HTTP协议用途非常广泛,是任何IT从业人员都需要掌握 ,作为测试人员,掌握HTTP协议显得尤为重要。...当我们输入url后,浏览器就给web服务器发送了一个http请求,服务器接收到http请求后进行处理,生成相应的返回结果,然后发送给浏览器,浏览器解析http相应中的html,然后我们就在浏览器上看到了相关页面...这里可以引申出一个非常常见的面试题:当我们在浏览器url地址栏输入一个地址后,会发生一些什么事情?...因为大部分的代理服务器都有缓冲功能,可以直接读取。 突破了访问限制。当访问权限受到限制时,可以使用有权限的代理服务器。比如工作中常用的堡垒机,跳板机等。 隐藏身份。...注意事项: Fiddler开启后,如果非正常退出,可能会导致电脑代理关闭失败,可重启Fiddler试试。 如果电脑上安装了其他的代理软件,会影响到抓包。
本文重点介绍使用 Chrome DevTools 更轻松地对 Web 应用程序进行故障排除的一些最佳做法、关键功能和提示。 什么是谷歌浏览器开发工具?...谷歌浏览器可能是开发人员中使用最广泛和最受欢迎的网络浏览器,因为它与众不同。它已逐渐成为大多数开发人员测试和调试其网站和 Web 应用程序的首选 Web 浏览器。...Google Chrome 为开发人员提供了使用浏览器中的内置开发人员工具(又名 DevTools)调试大多数 Web 应用程序的能力,而无需第三方调试工具。...当在指定对象上触发此事件时,该函数立即将事件和对象输出到控制台。 当指定对象上发生任何指定事件时,Event 对象将被记录到控制台。...在这篇文章中,我们研究了如何通过使用 Google Chrome 的 DevTools 直接在浏览器中进行调试来提高调试技能。希望这将使你能够更高效地对 Web 应用程序和组件进行故障排除。
因此,JavaScript使用事件和回调机制来处理:当一个操作已经完成并且其结果已经就绪时,浏览器或者操作系统才会去回调一个特定的函数来执行后续的操作。...在下面的例子中,当按钮的点击事件触发时,相应的处理函数通过为元素添加CSS类的方式使其执行动画。而当动画结束时,这个CSS类会被一个匿名回调函数移除。...所以这个"入侵者"在大多数浏览器中会卡住不动,GIF动画会间断性的暂停。在较慢的设备上可能会显示“脚本未响应”的警告。 这是一个复杂的例子,但它演示了前端性能是如何受到基础操作影响的。...Web Workers 一个解决长时间运行任务的方案是利用web workers。它允许浏览器主应用程序启动后台脚本并使用消息事件来通信。...这个属性及相似的属性如left和width会导致在动画的每一步浏览器都需要对整个页面文档进行回流和重绘。 当使用transform或者opacity这样的属性时,动画会更高效。
单击任何 JavaScript 文件,未使用的代码会用红条突出显示。 5. 找到DOM更改代码 当事件被触发时,很难确定哪个函数负责更新特定的 HTML DOM 元素。...DOM 中被删除 发生此类事件时,将在 Sources 面板中自动触发断点。...启用本地文件替代 Chrome 允许任何 HTTP 请求使用你的设备上的本地文件,而不是通过网络获取它。...可以在 Chrome 中或使用任何代码编辑器来编辑文件,每当重新加载页面时,都将使用更新的版本。 14. 管理客户端存储 网页可以使用多种技术将数据存储在客户端上。...你可以点击和智能手机拖到绕X任何Ÿ轴,或按住 Shift 围绕旋转z轴。 强制触摸而不是鼠标或其他本机设备事件。 设置空闲状态以检查你的应用如何响应锁定屏幕。
这样如果一切顺利,则当网络线程开始接收数据时,渲染器进程已处于待用状态。如果导航重定向的 URL 跨站点了,则可能不会使用此备用进程,在这种情况下就需要其他进程来处理了。 5....选项卡的历史记录将更新,因此后退/前进按钮将允许操作之前的浏览器历史。同时会将历史记录存储在磁盘上,以确保关闭选项卡或窗口后,依然可以浏览历史以及还原窗口。...但在此之前,它需要检查当前显示的网站是否注册了 beforeunload事件。 当你尝试新导航或关闭选项卡时,beforeunload 可以触发显示 “离开这个网站吗?” 这个弹窗,用以提示用户。...当新导航进行到与当前渲染的网站不同的网站时,会调用单独的渲染进程来处理新导航,同时保持当前渲染进程用于处理类似 unload 事件。...小结 在本篇文章中,我们研究了在导航的过程中,执行的流程以及响应头和客户端 JavaScript 等 Web 应用程序的代码,如何与浏览器进行交互。
Install事件 Install事件是在你的Service Worker第一次注册以及SW文件(/sw.js)发生变化的时候触发的(浏览器会自动鉴别是否发生改变了)。...你的新Service Worker是“等待激活”状态 当实际的网页关掉并重新打开时,浏览器会将原先的Service Worker替换成新的,然后在 install 事件之后触发 activate 事件。...简单地讲,任何你需要确保在有网络时立刻执行或者等到有网再执行的操作,都需要注册为一个sync事件。...在说道web push消息的时候,其实涉及到两个正在完善中的技术:消息提醒 与 信息推送。...要讲解如何使用Push API完全可以再写一篇文章,不过基本的套路如下: ? 这是个略微复杂难懂的过程,已经超出这篇文章的讨论范围。不过如果你很感兴趣,可以阅读这篇push消息介绍。
但是客户端泄漏内存的可能性很小,因为每次你在页面之间导航时浏览器都会清除内存。) Web 开发文献中没有很好地解决内存泄漏问题的方法。...在本文中,我想分享一些我在解决 Web 程序中的内存泄漏方面的经验,并提供一些示例来说明如何有效地跟踪它们。...你可以根据需要捕获此内存,但只需确保知道要测量的内存即可。 有时快照程序会卡住或崩溃。在这种情况下,只需关闭浏览器选项卡,然后重新开始即可。...当什么东西泄漏时,是因为你想要得到香蕉,但是最终得到的是香蕉、拿着香蕉的大猩猩以及整个丛林。如果你基于总字节数进行衡量,那么你所衡量的是丛林,而不是香蕉。 ?...但是,通过尝试降低 Web 应用的内存使用量,可以提高运行时性能,避免崩溃,并尊重用户设备上的资源限制。 感谢 Jake Archibald 和 Yang Guo 对本文的草稿提供反馈。
当我们网页需要在不同的浏览器窗口之间共享数据时,可能需要使用 WebSocket 或 WebRTC 等技术。但是,这些技术会过于复杂。...如何使用 Broadcast Channel API? 基础使用方法 使用 Broadcast Channel API 的基本方法非常简单。...详细介绍可以在 MDN Web Docs[2] 上查看完整文档。...所有选项卡都将显示同样的结果,并且如果有任何一种选项卡更改了结果,则其他选项卡也会显示更改后的结果。 实现代码如下: 当有一种选项卡更改结果时,所有选项卡都会显示更改后的结果。
; hide.bs.dropdown: 这个事件在菜单关闭前触发; hidden.bs.dropdown: 这个事件在菜单关闭后触发; show或hide事件在完成请求之前发生,而在请求完成时触发shown...在这里,请求是打开和关闭下拉菜单。 让我展示一个如何使用这些事件的例子。我已经写了下面的JQuery代码片段去监听所有的下拉插件状态,并打印每个事件触发时的状态。 任何DOM元素中侦听滚动,并根据元素的滚动位置在导航栏中突出显示菜单项。 基本上,它是一个双组件的插件;它由一个导航条和一个内容区域组成。内容区域划分为多个部分,每个部分都有一个惟一的ID。...当设置为“静态”时,当在模态主体外的任何地方点击时,模式对话框不会关闭。 keyboard属性用于启用或禁用键盘的escape键功能,当设置为false时,Esc键不会关闭模式对话框。...我们还学习了如何通过设置自定义data-*属性和通过JavaScript来定制它们。当使用Bootstrap时,您应该始终使用内置的插件,避免编写自定义插件。
我们平时上网在浏览器内打开某个网址时可能会遇到页面报错提示:“您的连接不是私密连接”,这种情况多是电脑上的时间日期设置的有问题导致证书过期失效或是网站不安全导致的。...要登录门户网站,只需访问任何网站并输入您的登录信息即可。完成后,检查问题是否已解决。 方法二:使用隐身模式 1、许多Web浏览器都具有隐身模式,允许您在不在计算机上存储任何历史记录或缓存的情况下上网。...2、或者,您只需按Ctrl + Shift + N即可打开新的隐身窗口。完成后,检查问题是否已解决。如果在使用隐身模式时未出现错误消息,则您的某个扩展程序可能会导致此问题。...这是一个简单的过程,您可以按照以下步骤操作: 1、按右上角的菜单按钮,然后从菜单中选择设置。 2、当“设置”选项卡打开时,一直向下滚动并单击“显示高级设置”。...6、当“ Internet选项”窗口打开时,转到“连接”选项卡。现在单击局域网设置按钮。 7、禁用“使用自动配置脚本”和“将代理服务器用作LAN选项”。 8、单击确定保存更改。