Dev Browser
Dev Browser 在你设备的系统 WebView 上全屏显示你的网页,附带七个 DevTools 面板(控制台、网络、存储、元素、CSS、性能 和 审计)、21 个设备配置、历史记录、书签和截图。它在免费版和 Pro 上完全一样。
它是什么,以及如何打开
它是一个全屏窗口,会盖住所有内容,包括底部导航栏。顶部是地址栏,下方是你的页面,需要时还会有一个 DevTools 面板。页面视图只有一个:没有标签页、没有无痕模式,也没有弹出窗口。编辑器把它称为 DevBrowser;在 编辑器 页面上,它的按钮被描述为 在浏览器中打开。
打开方式
| 你所在的位置 | 你点击的内容 | 打开的地址 |
|---|---|---|
| 编辑器 页面(带有文件标签页的那一页) | 页眉中的地球图标。它没有可见文字:屏幕阅读器称它为 在浏览器中打开。只有在打开了 HTML、CSS、JavaScript 或 TypeScript 文件(而非外部文件)时才会出现,并且在项目的本地服务器运行之前一直是灰色的。 | http://localhost:<端口>/<已打开文件的路径>,端口为服务器实际获得的端口 |
| 全屏编辑器 | 顶部栏中的地球图标(DevBrowser),可用于除 Markdown 和外部文件之外的任何文件。 | http://localhost:<端口>/<项目内文件的路径>,端口为正在运行的本地服务器的端口 |
| 编辑器的菜单或命令面板 | 在 DevBrowser 中打开,位于 工具 部分的 运行 分组下(或直接搜索它),可用于除 Markdown 之外的任何文件。 | http://localhost:<端口>/<项目内文件的路径>,端口为正在运行的本地服务器的端口 |
编辑器的运行面板,运行 .html 文件之后 | 在 DevBrowser 中打开 按钮 | 本地服务器上的同一个地址:运行器输出的 file:// 路径会被转换成 http://localhost:<端口>/<项目内文件的路径> |
8765 到 8774),所以即使其他程序占用了 8765,也能访问你的文件。如果还没有本地服务器在运行,它们会退回到 8765,而那里没有任何响应:请先在 编辑器 页面打开项目,因为服务器正是由此启动的。预览背后的本地服务器
- 在 编辑器 页面打开项目时,会自动为其文件夹启动一个小型 HTTP 服务器;没有启动或停止它的按钮。它取
8765到8774中第一个空闲的端口,并且只监听127.0.0.1。 - 这是一个静态服务器:它发送你项目中的文件、文件夹的
index.html或文件夹列表,响应头为Cache-Control: no-cache, no-store, must-revalidate,并且从不运行服务端代码。 - 每个请求都需要服务器的凭据。Dev Browser 会替你添加,所以你的页面可以正常加载;任何其他到达服务器的请求都会收到
401 Unauthorized。 - 你自己的文件无需联网即可加载。你的页面向互联网请求的内容(CDN 脚本、字体、API)仍然需要网络。
窗口的行为
- 没有关闭按钮,也没有键盘快捷键。请使用系统的返回手势或按钮:它会先在页面的历史记录中后退,只有在没有可退的记录时才会关闭 Dev Browser。
- 关闭它不会丢失你的位置。用相同的地址再次打开,页面会回来,控制台也会保留。用不同的地址打开,则控制台、网络、存储、DOM、CSS、指标和审计都从空白开始;你的设备配置、是否显示 DevTools、历史记录和书签保持不变。
- 旋转设备会保留 DevTools 的标签页、已打开的对话框以及页面与面板的分隔比例。横屏时状态栏会隐藏;滑动即可让它重新出现。
- DevTools 面板一开始是隐藏的。
你不能做什么,以及原因
- 从 工具 面板、全局命令面板、主页、设置或深度链接打开它:它是编辑器的一个工具,不是独立的模块。有意为之
- 同时打开多个页面:没有标签页、没有无痕模式,也没有弹出窗口。有意为之
界面地图
Dev Browser 的每个界面、面板和对话框各占一行。下面的各节会逐一说明。
| 界面 | 如何到达 | 你可以做什么 |
|---|---|---|
| 地址栏 | 始终位于顶部。 | 输入地址或搜索内容、重新加载或停止、打开 DevTools、打开菜单。 |
| 浏览器菜单 | 地址栏中的 浏览器菜单(⋮)。 | 后退、前进、查找、截图、设备、历史记录、书签、系统浏览器、清除缓存。 |
| 页内查找 | 菜单 → 页内查找。 | 搜索页面中的文字,并在匹配项之间跳转。 |
| 页面 | 地址栏下方。 | 使用页面、双指缩放、为上传选择文件、复制加载错误。 |
| 设备配置 | 菜单 → 设备配置。 | 模拟手机、平板或桌面的尺寸和 User-Agent;旋转它。 |
| 历史记录和书签 | 菜单 → 历史记录 或 书签。 | 重新打开页面、删除书签、清除历史记录。 |
| 添加书签 | 菜单 → 添加书签。 | 保存当前页面,标题和地址都可以编辑。 |
| 清除缓存 | 菜单 → 清除缓存。 | 确认后清除缓存、Cookie 和站点存储。 |
| 截图 | 菜单 → 截图 或 截图(整页)。 | 把可见页面或整个页面保存为 PNG。 |
| DevTools 面板 | </> 按钮(开发者工具)。 | 显示或隐藏七个面板,并调整它们的大小。 |
| 控制台 | DevTools → 控制台。 | 阅读并筛选页面的消息,运行 JavaScript。 |
| 网络 | DevTools → 网络。 | 查看页面请求的状态、大小和耗时;打开某个请求的详情。 |
| 存储 | DevTools → 存储。 | 查看、复制和删除 localStorage、sessionStorage 和 Cookie。 |
| 元素 | DevTools → 元素。 | 阅读 DOM 树、在页面上选取元素、复制其选择器、高亮它。 |
| CSS | DevTools → CSS。 | 把你自己的 CSS 应用到页面,并阅读页面的规则。 |
| 性能 | DevTools → 性能。 | 阅读加载时间、Core Web Vitals 和页面统计。 |
| 审计 | DevTools → 审计。 | 运行 PocketCode 的本地质量检查(五个类别共 47 项测试)。 |
| 自动重新加载 | 无需点击任何东西。 | AI 智能体写入影响该页面的文件时,页面会重新加载。 |
| AI 智能体工具 | AI 聊天。 | 智能体可以打开、读取、点击、输入、审计并截取当前打开的页面。 |
浏览页面
地址栏始终位于顶部,页面占据窗口的其余部分。其他所有功能都在 浏览器菜单 里。
地址栏
点击地址标签即可编辑。标签显示的地址不含 https://、http://、www. 和末尾的 /;HTTPS 页面前面是一把锁,其余页面前面是一个地球。下方有一条进度条,随页面加载而填满;当页面报告进度时,显示的是真实百分比。
你可以
- 在 搜索或输入 URL 中输入地址或搜索内容,然后按键盘上的「前往」键;X(取消)会停止编辑。
- 用 重新加载 重新加载页面;页面加载过程中,同一个按钮会变成 停止。
- 用
</>按钮(开发者工具)打开或关闭 DevTools 面板。红色角标统计控制台中的错误数,最多显示到 99+。 - 打开 浏览器菜单(⋮)。
你不能做什么,以及原因
- 加载
file://、content://、data:、javascript:、intent:、mailto:或tel:地址:在地址栏中输入这些地址,它们会变成一次 Google 搜索。有意为之 - 选择其他搜索引擎:不是地址的文字始终在 Google 上搜索。有意为之
- 打开本地网络中的纯
http://地址(例如http://192.168.1.20):应用的网络策略只允许对localhost、127.0.0.1和10.0.2.2使用未加密的 HTTP。请使用 HTTPS 或隧道。需要网络
你输入的内容会如何处理
| 你输入 | Dev Browser 加载 |
|---|---|
http://… 或 https://… | 原样使用该地址。 |
任何其他协议(file://、data:、javascript:、mailto: 等) | 对该文字的 Google 搜索。 |
localhost…、IPv4 地址或 host:port | 同样的文字,前面加上 http://。 |
带点的文字,例如 example.com | 同样的文字,前面加上 https://。 |
| 其他任何内容 | Google 搜索(https://www.google.com/search?q=…)。 |
浏览器菜单
点击 ⋮ 按钮即可打开。以下是它的 11 个项目,按此顺序排列。
| 项目 | 作用 |
|---|---|
| 后退 | 在页面的历史记录中后退。无处可退时显示为灰色。 |
| 前进 | 在页面的历史记录中前进。无处可进时显示为灰色。 |
| 页内查找 | 在地址栏下方打开搜索栏。 |
| 截图 | 把页面的可见部分保存为 PNG。 |
| 截图(整页) | 把整个页面保存为一张 PNG。 |
| 设备配置 | 打开设备选择器。 |
| 历史记录 | 打开你访问过的页面列表。 |
| 书签 | 打开你的书签。 |
| 添加书签 | 把当前页面保存为书签。 |
| 用系统浏览器打开 | 在你的默认浏览器中打开当前地址。仅适用于 http 和 https;如果无法打开,地址会显示在红色提示中。 |
| 清除缓存 | 确认后清除缓存、Cookie 和站点存储。 |
页内查找
在菜单中选择 页内查找 后,它会在地址栏下方打开。
你可以
- 在 页内查找 中输入文字:边输入边搜索,在页面中标出匹配项,并显示一共有多少个。
- 用 下一个 和 上一个 跳到下一个或上一个匹配项;键盘上的搜索键同样会跳到下一个。
- 用 关闭 关闭它;这会清除搜索。
你不能做什么,以及原因
—
页面
页面在系统 WebView 中运行,已开启 JavaScript 和 DOM 存储。
你可以
- 像平时一样使用页面:滚动、点击、输入和双指缩放。
- 通过系统文件选择器,为文件上传字段选择文件。
- 看到页面自己的
alert和confirm对话框。 - 在可复制的红色提示中读取加载错误:WebView 自己的消息;当页面本身以 400 或更高的状态码响应时,显示
HTTP <状态码> <原因>;或者WebView render process crashed. Reload the page.。页面的渲染进程崩溃不会关闭 PocketCode。
你不能做什么,以及原因
- 跟随使用其他协议的链接(
tel:、mailto:、intent:、file:等):它们会被忽略,没有任何提示。有意为之 - 在 HTTPS 页面中加载 HTTP 内容(混合内容)。有意为之
- 越过无效的 TLS 证书、使用 HTTP 基本认证登录或出示客户端证书:请求会被取消。只信任系统的证书颁发机构。有意为之
- 让页面使用摄像头、麦克风或你的位置:它们始终被拒绝,控制台 会显示一条警告(Warning)。有意为之
- 在应用内下载文件:下载链接会在系统浏览器中打开。有意为之
- 打开弹出窗口。有意为之
设备与视口
选择一个设备,查看页面在该尺寸下的外观和行为。设备配置只会改变两件事:视口大小和页面收到的 User-Agent。
- 页面视图采用该配置的宽度和高度(CSS 像素)。如果屏幕放不下,会按比例缩小显示(触摸坐标也会相应缩放),就像 Chrome 的设备模式。
- 视口的长边永远不会超过 1,600 CSS 像素:更大的配置会在该限制内保持比例(例如 Desktop 4K 显示为 1600 × 900)。
- User-Agent 与设备系列一致:iPhone 和 iPad 配置使用 iOS 上的 Safari,Android 手机和平板使用 Android 上的 Chrome,桌面配置使用 Windows 或 Mac 上的 Chrome。
- 每个尺寸旁边显示的像素比(如
2.625x)只是文字:不会应用到页面上。 - 选择配置时,如果已加载页面,就会重新加载页面。自适应 会去掉固定尺寸,让页面填满整个区域,但仍保留 Android 上 Chrome 的 User-Agent。在你选择任何配置之前,完全没有模拟。
你可以
- 在菜单中打开 设备配置。对话框同样以 设备配置 为标题,并停在你当前配置所在的分组。
- 在 手机、平板 和 桌面 之间切换。
- 选择 自适应(自适应容器大小)或 21 个配置之一;当前使用的配置带有勾选标记(屏幕阅读器读作 已选择)。
- 用 旋转设备 把手机或平板配置旋转 90°;对话框随即关闭。
你不能做什么,以及原因
- 旋转桌面配置。有意为之
- 让长边超过 1,600 CSS 像素,无论哪个配置:否则页面会失去响应。有意为之
21 个配置
| 分组 | 配置(CSS 像素) |
|---|---|
| 手机(7 个,可旋转) | iPhone 15 Pro 393×852 · iPhone 15 Pro Max 430×932 · iPhone SE 375×667 · Google Pixel 8 412×915 · Google Pixel 8 Pro 448×998 · Samsung Galaxy S24 360×780 · Samsung Galaxy S24 Ultra 412×915 |
| 平板(6 个,可旋转) | iPad Pro 11" 834×1194 · iPad Pro 13" 1024×1366 · iPad Air 820×1180 · iPad Mini 744×1133 · Google Pixel Tablet 1080×1920 · Samsung Galaxy Tab S9 1600×2560 |
| 桌面(8 个,不可旋转) | Desktop 1080p 1920×1080 · Desktop 1440p (2K) 2560×1440 · Desktop 4K 3840×2160 · Laptop (1366x768) · MacBook Pro 14" 1512×982 · MacBook Pro 16" 1728×1117 · iMac 24" 2240×1260 · Ultrawide (3440x1440) |
DevTools 面板
点击地址栏中的 </> 按钮(开发者工具)即可显示或隐藏面板。它一开始是隐藏的。
- 竖屏时面板位于页面下方;横屏时(屏幕宽度大于高度)位于右侧。
- 拖动页面与面板之间的手柄来调整大小:页面保留 25% 到 80% 的空间,默认 55%。
- 共有七个标签页。只有被选中的标签页显示名称,以便全部都放得下。
- 只要已加载页面,存储、元素、CSS 和 性能 每次被选中时都会重新读取页面。网络 会在你打开它时补全请求的耗时。审计 只有在你点击 运行审计 时才会运行。
- 在 网络、存储 和 元素 中,某一行的详情会在列表下方、面板内部打开,所以页面保持可见。详情有标题、可选的标签页、一些操作和 关闭,内容较长时可以滚动。
七个标签页
| 标签页 | 显示内容 |
|---|---|
| 控制台 | 页面输出的日志,外加一行用于运行 JavaScript 的输入框。 |
| 网络 | 页面发出的请求,含状态、大小和耗时。 |
| 存储 | 页面的 localStorage、sessionStorage 和 Cookie。 |
| 元素 | DOM 树,带元素选取器。 |
| CSS | CSS 编辑器和页面自身的规则。 |
| 性能 | 加载时间、Core Web Vitals 和页面统计。 |
| 审计 | 包含 47 项测试的本地质量检查。 |
你不能做什么,以及原因
- 设置断点、连接 Chrome 的远程 DevTools(
chrome://inspect)、使用浏览器扩展,或检查 IndexedDB、Cache Storage、service worker 和 Web 应用清单:引擎是系统 WebView,应用没有开启远程调试,而这七个面板就是全部。设备
控制台
显示页面的 console.* 消息及其级别和文字;如果页面提供了时间、文件和行号,也会一并显示。它还会显示应用发出的几条警告:被拒绝的权限、存储读取问题和自动重新加载。
你可以
- 用四个标签按级别筛选(错误、警告、信息、调试)。每个标签显示其数量;再点一次即可取消筛选。普通的
console.log没有对应标签:未开启筛选时才能看到它们。右侧的数字是列出的消息数量。 - 用垃圾桶图标(清除)清空控制台。
- 在页面的主框架中运行 JavaScript:在 执行 JavaScript… 中输入,然后点击 运行。命令及其结果(截断至 2,000 个字符)会作为普通消息添加,因此筛选对它们同样有效。
- 用 上一条命令 调出之前的命令:它会循环浏览这些命令,并且不会连续两次重复同一条命令。
- 长按消息文字即可复制。
- 只有当你本来就在列表末尾时,新消息才会自动滚动到可见位置。
你不能做什么,以及原因
- 查看最近 1,000 条以上的消息:更早的会被丢弃。页面跳转不会清空控制台,但用不同的地址打开 Dev Browser 会清空。有意为之
网络
页面所发请求的列表,每个请求显示一个表示类型的字母(D 文档、C 样式表、J 脚本、I 图片、F 字体或 fetch、X XHR、M 媒体、? 其他)、文件名、状态、大小、耗时,以及一条把其耗时与最慢请求相比较的条形。摘要显示为 listed/total · KB · average ms。该列表只是旁路观察:WebView 每发出一个请求就记录一个,既不拦截也不修改;其状态、耗时、大小和真实类型随后由错误回调和页面的 Resource Timing 数据补全,在页面加载完成时以及你打开该标签页时读取。应用自己发出的请求只有发往项目本地服务器的那些,目的是添加其凭据。
你可以
- 用标签 All、Doc、CSS、JS、XHR(包含 fetch)和 Img 按类型筛选。这些词始终是英文。
- 点击某个请求,在列表下方打开其详情,共有三个标签页:概览(url、method、status、size、time、duration 和 error)、请求头(WebView 提供的请求头)和 响应头。
- 用垃圾桶图标(清除)清空列表。
你不能做什么,以及原因
- 查看请求体或响应体、响应头或 MIME 类型:响应头 标签页始终显示 无,因为目前还没有任何内容填充这些字段。尚未提供
- 把请求拆分为 DNS、TLS 和等待阶段:每个请求只有一条条形,因为 WebView 不提供这些耗时。设备
- 在页面之间保留列表:主页面每次跳转都会清空它(只保留新文档),并且最多保存 1,000 个请求。有意为之
- 指望每个成功的请求都有状态:状态来自页面的 Resource Timing 数据,WebView 没有报告时该列显示短横线。错误状态(400 及以上)始终会显示。设备
存储
在三个分区(本地存储、会话存储 和 COOKIES)中显示页面的 localStorage、sessionStorage 和 Cookie,每个分区带有计数,另有一个总的 n 项 计数器。它会在你打开标签页和点击 刷新 时读取页面。它用于查看、复制和删除;要创建或修改值,请在 控制台 中运行 JavaScript。
你可以
- 点击某一行,在列表下方的详情中打开其完整的键和值。
- 点击 复制 复制该值(已复制到剪贴板 会确认)。
- 点击 删除 只移除这一个键。
- 用分区标题旁边的红色清除图标(清除)清空整个分区。
- 页面没有任何内容时,面板显示 没有存储数据,并建议试试 google.com 这样的网站。
你不能做什么,以及原因
- 查看 HttpOnly Cookie 或 Cookie 的属性(域、过期时间、Secure、SameSite):面板读取的是
document.cookie,它对页面脚本隐藏了这些内容。有意为之 - 删除为其他路径或域设置的 Cookie:删除 Cookie 的做法是用
path=/让它过期。有意为之
元素
页面 DOM 的只读树,用你的代码主题着色。每一行显示 <tag id class …>、叶子节点的文字和子节点数量(子节点)。打开时 <html> 已展开,其子节点也已展开(<head> 除外);点击某一行可展开或折叠。标题处统计节点数。它是一份快照,在你打开标签页或点击 刷新 DOM 时读取:不会自动更新,你也不能在这里编辑节点或读取计算样式和事件。
你可以
- 点击选取图标(在页面中选择元素),然后点击页面上的任意位置。标题会显示 点击页面中的元素;你的下一次点击会选取该元素而不会触发它(不会跟随链接,也不会提交表单),树会展开到该元素,在页面上高亮它,并在列表下方打开它的详情。如果该元素比快照更深,则选取快照中最深的那个祖先元素。
- 用 刷新 DOM 重新读取快照。
- 用节点的 (i) 图标(条目详情)打开节点的详情:它的
<tag>、它的 CSS 选择器,以及它的id、class、属性和text。 - 点击 复制选择器 复制形如
html > :nth-child(2) > :nth-child(1)的位置选择器;它使用位置,而不是 id 或 class。 - 点击 在页面中高亮 用橙色框出该元素,并把它滚动到中央。轮廓会一直保留,直到你高亮另一个节点或重新加载页面。
- 未加载任何内容时,面板显示 没有 DOM 树 和 加载页面后点击刷新。
你不能做什么,以及原因
- 查看完整的 DOM:快照最多到深度 10,每个节点 100 个子节点(
… +N more节点代表其余部分),每个元素 20 个属性,500 个字符的文字,每个属性值 200 个字符。它只包含元素(不含注释),也不会查看 iframe 或 Shadow DOM 内部。有意为之
CSS
一个把 CSS 应用到当前页面的小编辑器,以及页面自身规则的列表。CSS 只存在于页面中:面板从不写入你的项目文件,所以请把你喜欢的内容复制到自己的样式表中。
你可以
- 在编辑器(编辑器)中编写 CSS,然后点击 应用 CSS:它会在页面中创建或更新一个 id 为
pocket-css-inject的<style>元素。 - 用 清除 移除你应用的内容(只有在已应用内容时才可用)。
- 你最后应用的 CSS 会在每次加载、重新加载和跳转后再次应用,即使跳到另一个网站也一样,直到你点击 清除。用不同的地址打开 Dev Browser 时它会丢失。
- 切换到 规则 (n) 阅读页面的规则:选择器、属性数量、前三个属性以及来源(样式表的地址或
inline)。点击一条规则可把它的声明复制到编辑器中;此时应用它们会覆盖原规则,而不是原地修改。 - 没有可列出的内容时,面板显示 未检测到 CSS 规则。
你不能做什么,以及原因
- 查看超过 200 条规则、
@media、@supports或@keyframes内的规则,或浏览器不允许页面读取的样式表:只列出顶层规则,读取不到的样式表会被悄悄跳过,没有任何提示。有意为之
性能
加载时间和页面统计,读取自页面的 Performance API。点击 刷新 可重新读取。它不分析 CPU 或 JavaScript,也没有限速功能。
你可以
- 阅读 核心 WEB 指标 下的卡片:首次绘制(FP)、首次内容绘制(FCP)、DOM 内容已加载(DCL)和 页面加载 始终显示;最大内容绘制 (LCP)、累积布局偏移 (CLS) 和 总阻塞时间(TBT)在其值大于零时显示。每张卡片按固定阈值着色为良好、需改进或较差(例如 LCP 为 2,500 和 4,000 ms,CLS 为 0.1 和 0.25,TBT 为 200 和 600 ms)。
- 阅读 页面统计:DOM 节点、资源,以及 WebView 提供时的 JS 堆内存 和 传输量。
- 阅读 资源瀑布流 (n):最多 50 个资源,包含它们的类型、名称的最后 30 个字符和耗时。
- 点击 录制:它每隔 1.5 秒重新读取一次指标,直到你点击 停止。它不会录制 trace,只是实时刷新。
你不能做什么,以及原因
- 在 WebView 没有报告时看到 LCP、CLS 和 TBT 卡片:只有当它们的值大于零时才会出现。JS 堆内存和传输大小同样取决于 WebView 提供什么。设备
审计
本地估算,不是 Lighthouse。 PocketCode 在页面内以 JavaScript 运行自己的一套 47 项检查。每项检查按固定阈值给出 0 到 1 的分数,类别得分是其各项检查的平均值乘以 100。没有 Lighthouse,没有移动端或网络模拟,也没有 trace。检查名称、仪表标签以及 passed、warnings 和 failed 这几个词始终是英文。
你可以
- 点击 运行审计(运行时显示 审计中…)。审计只会在你点击该按钮时运行。第一次运行之前,面板显示 运行审计以分析页面质量 和 检查性能、无障碍、最佳实践、SEO 和 PWA。
- 阅读五个 0 到 100 的仪表(Perf、A11y、BP、SEO 和 PWA;90 起为绿色,50 起为橙色)、被审计的地址,以及审计耗时(毫秒)。
- 阅读摘要(
N passed、N warnings、N failed),并用标签 全部 (n)、passed、warnings 和 failed 筛选。得分达到 0.9 或以上的检查通过,从 0.5 到不足 0.9 为警告,低于 0.5 则失败。 - 折叠各个类别,并打开某项检查阅读它的详情(最多 8 行)。
- 再次点击该按钮(现在位于顶部栏中)即可重新测量。
你不能做什么,以及原因
- 获得可与 Lighthouse 或 PageSpeed Insights 相比的分数:这些是 PocketCode 自己的估算,而且某些检查只查看页面的一个样本(DOM 深度读取前 150 个元素,字号 100 个,点击目标 50 个)。有意为之
- 检查 service worker:该项检查只检测是否有 service worker 在控制页面。有意为之
47 项检查
| 类别 | 检查 |
|---|---|
| Performance(12) | First Contentful Paint · Largest Contentful Paint · Page Load Time · Time to First Byte · DOM Size · Maximum DOM Depth · Render-Blocking Resources · Minified JavaScript · Properly Sized Images · Resource Count · Total Transfer Size · Long Resource Loads |
| Accessibility(11) | Image Alt Text · HTML lang Attribute · Document Title · Button Accessible Names · Link Accessible Names · Form Input Labels · Heading Hierarchy · Valid ARIA Roles · Tab Index Values · Landmark Regions · Valid List Structure |
| Best practices(9) | HTTPS · Viewport Meta Tag · Document Type · Character Encoding · No Deprecated HTML · Safe Cross-Origin Links · Responsive Images · Image Aspect Ratio · No Mixed Content |
| SEO(9) | Page Title · Meta Description · H1 Heading · Canonical URL · Structured Data · Robots Directives · Crawlable Links · Legible Font Sizes · Tap Target Size |
| PWA(6) | Service Worker · Web App Manifest · HTTPS Required · Theme Color · Apple Touch Icon · App Icons |
历史记录、书签和站点数据
历史记录、书签和缓存对话框都从 浏览器菜单 开始。
历史记录和书签
历史记录 和 书签 打开的是同一个对话框,只是停在不同的标签页上。它的标题是当前标签页的名称,并带有 关闭 按钮。历史记录保留最近 100 个页面,最新的在前;连续重新加载的同一页面只会更新标题。应用最多存储 200 个书签,并且从不重复同一个地址。两者都会在会话之间保存在设备上。
你可以
- 在 历史记录 和 书签 标签页之间切换。
- 点击一个条目即可打开它的地址(遵循与地址栏相同的规则)并关闭对话框。
- 用垃圾桶图标(删除)删除一个书签。
- 用红色清扫图标(清除)删除全部历史记录,它只在历史记录标签页且有条目时显示。不会要求确认。
- 列表为空时,会显示 暂无历史记录。先浏览一些网页吧。 或 暂无书签。可通过菜单添加。
你不能做什么,以及原因
- 保留超过 100 条历史记录或 200 个书签。有意为之
添加书签
该对话框通过菜单中的 添加书签 打开。
你可以
- 编辑 标题(预填页面的标题或地址)和 URL(预填当前地址)。
- 点击 保存(任一字段为空时保持禁用)或 取消。即使该地址已经保存过,也会出现 书签已添加;它不会被重复保存。
你不能做什么,以及原因
—
清除缓存
对话框会询问:「这将清除所有缓存数据,包括 Cookie 和存储。要继续吗?」
你可以
- 点击 确认 或 取消。
- 确认后,它会清除 WebView 的 HTTP 缓存;当前打开页面所属站点的
localStorage、sessionStorage、JavaScript 可见的 Cookie 和 IndexedDB 数据库;以及应用 WebView 的全部 Cookie,而不只是此站点的。随后 存储 面板刷新,并出现 站点数据已清除。 - 它会保留你的浏览历史:页面的前进后退历史和 历史记录 列表都不会被清除。
你不能做什么,以及原因
- 只清除某一个站点的数据:Cookie 清除覆盖应用 WebView 所知的每个站点。有意为之
截图
菜单中有两个操作:截图 和 截图(整页)。两者都会把 PNG 保存为 Pictures/PocketCode/Screenshots 中的 screenshot_<毫秒数>.png,因此它会出现在你的相册中,并提示 截图已保存(整页截图还会附上尺寸,如 (1080x4200))。
你可以
- 截图 保存页面视图所显示的内容。如果长边超过 4,096 px,会按比例缩小。
- 截图(整页) 先把页面向下滚动,最多 12 次,每次约屏幕的 90%,以便让懒加载内容出现;然后绘制整个文档,裁掉底部空白,再把你带回原来的位置。最高以 2 倍密度截取。
你不能做什么,以及原因
- 无提示地截取很高的页面:整页截图的画布按测得高度的 1.45 倍取尺寸,并限制在 20,000 px 高和 64 MB。该尺寸超出上限时,提示会以
[已截断至5屏]结尾,即使整个页面其实放得下。尽管字面如此,截断的依据是这个高度和内存上限,而不是块数。设备 - 在最低版本 Android 9 上保存到相册:在那里 PNG 会进入应用自己的文件夹(
…/files/Pictures/PocketCode/Screenshots)。从 Android 10 起它会进入相册。设备
自动重新加载
当 AI 智能体在你的项目中写入文件时,如果当前打开的页面就是该文件,或是其所在文件夹的 index.html,或者当前打开的页面位于 localhost、127.0.0.1 或 [::1] 且该文件是静态文件(.html、.htm、.css、.js、.mjs、.json、.svg、.png、.jpg、.jpeg、.gif、.webp、.woff、.woff2),页面会自动重新加载。控制台 会记录一行以 Live Reload: 开头、以 actualizado 结尾的消息(这段文字始终是西班牙语)。
你可以
- 在 Dev Browser 打开着你的页面时,到 AI 聊天 中让 AI 智能体编辑它,然后观察页面重新加载。
- 随时用 重新加载 手动重新加载。
你不能做什么,以及原因
- 让页面在你自己于编辑器中保存文件时重新加载,或打开或关闭自动重新加载:只有 AI 智能体的写入才会触发它。尚未提供
AI 智能体与 Dev Browser
AI 聊天 中的 AI 智能体有 19 个用于操作 Dev Browser 的工具。它们只在 Dev Browser 打开时有效:否则会回答 Dev Browser is not open. Ask the user to open the Dev Browser, then call this tool again.
| 分组 | 工具 |
|---|---|
| 打开页面(2) | browser_navigate(http、https 或 about;它会等待页面开始加载和加载完成,分别最长 5 秒和 10 秒)· browser_nav_action(BACK、FORWARD 或 RELOAD) |
| 读取页面(7) | browser_get_page_info · browser_get_elements · browser_get_console_logs · browser_get_network · browser_get_storage(读取实时页面,标签页关闭时也可以)· browser_get_performance · browser_find_text |
| 操作页面(4) | browser_click_element · browser_input_text · browser_scroll · browser_wait_for(选择器、文字或网络空闲;500 到 15,000 ms) |
| 审计与截图(2) | browser_run_lighthouse_audit(与 审计 相同的本地检查)· browser_screenshot |
| 设备、存储与脚本(4) | browser_set_device · browser_clear_storage · browser_set_cookie · browser_evaluate_js |
你可以
- 让智能体打开你的页面、读取它的控制台和请求、通过点击和输入走一遍流程、截图或运行审计。
- 关闭 Dev Browser 即可阻止智能体访问该页面。
你不能做什么,以及原因
- 在 Dev Browser 关闭时使用这些工具。有意为之
- 运行超过 32,768 个字符或超过 15 秒的脚本,或使用超过 512 个字符的选择器。有意为之
- 设置 HttpOnly Cookie:
browser_set_cookie通过document.cookie写入。有意为之
免费版与 Pro
隐私与安全
Dev Browser 会保存什么、保存在哪里,以及它能访问什么。
- 历史记录和书签 保存在你的设备上,位于应用的私有存储中(
SharedPreferences,一段 JSON 文本,未加密)。应用的同步代码不会读取它们,所以 Cloud Sync 不会带走它们。历史记录保存的是完整地址。 - 退出登录会清除这些数据。 退出 PocketCode 登录会同时清除 WebView 的 Cookie、存储和缓存,以及 Dev Browser 的历史记录和书签,因为 WebView 由所有账号共用。
- 整个应用共用一个浏览器。 WebView 与应用的其他部分共享 Cookie,所以你在这里登录的网站会一直保持登录,直到你退出 PocketCode 登录或使用 清除缓存(它会移除 WebView 的全部 Cookie)。
- 权限。 页面对摄像头、麦克风和位置的请求始终被拒绝。
- 没有文件。 页面视图无法读取设备上的文件,混合内容会被阻止,并且开启了 Google 的安全浏览(Safe Browsing)。
- 本地服务器 只监听
127.0.0.1,并拒绝任何不带凭据的请求;凭据由 Dev Browser 自己添加。 - 它向页面添加了什么。 性能观察器(
window.__pcPerf)、你应用的 CSS(id 为pocket-css-inject的<style>元素)、元素选取器的框架和一个高亮类。它不注册任何addJavascriptInterface桥,所以页面无法访问应用的对象。 - AI 智能体 可以在 Dev Browser 打开时读取并操作当前页面:运行 JavaScript、点击、输入、清除存储和设置 Cookie。
限制
Dev Browser 的主要限制,每一条都附有原因。上面各节列出了其余的限制。
- 引擎是你设备的系统 WebView,所以它的版本,以及
performance.memory或成功响应的状态等数据都取决于它。没有扩展,也没有远程调试。设备 - 互联网上的页面需要网络连接;只有项目的本地服务器无需联网也能工作。需要网络
- 只允许对
localhost、127.0.0.1和10.0.2.2使用纯 HTTP。对于你本地网络中的服务器,请使用 HTTPS 或隧道。需要网络 - 无效的 TLS 证书、HTTP 基本认证和客户端证书都会被拒绝,并且只信任系统的证书颁发机构。有意为之
- 在地址栏中输入的地址必须是
http或https;其他任何内容都会变成 Google 搜索,而且无法更改搜索引擎。有意为之 - 只有一个页面视图:没有标签页、没有无痕模式、没有弹出窗口,也不能在应用内下载。有意为之
- 混合内容、摄像头、麦克风和位置都被阻止。有意为之
- 没有关闭按钮,也没有键盘快捷键:你要用系统的返回手势退出,并且要等页面的历史记录用完之后。有意为之
- 设备配置会改变视口大小(长边上限为 1,600 CSS 像素)和 User-Agent。其他任何东西都不会被模拟。有意为之
- 网络 面板不显示请求体、响应头或 MIME 类型,并且 响应头 标签页始终显示 无。尚未提供
- 审计 是 PocketCode 自己的 47 项本地估算,不是 Lighthouse,其文字始终是英文。有意为之
- 自动重新加载只对 AI 智能体写入的文件起作用,对你手动保存的文件不起作用。尚未提供
- 没有本地服务器在运行时,全屏编辑器的地球图标、在 DevBrowser 中打开 和运行面板中的按钮会退回到端口
8765,而那里没有任何响应:项目的工作区会在你于 编辑器 页面打开项目时启动服务器。尚未提供 - 截图受内存限制:可见部分为 4,096 px,整页为 20,000 px 和 64 MB,并且在 Android 9 上它们会进入应用自己的文件夹。设备
常见问题
下面的消息是应用显示的真实消息。如果某条消息来自本地服务器或 AI 智能体的工具,它的语言是固定的。
编辑器 页眉中的地球图标是灰色的,或者没有出现
只有当打开的文件是 HTML、CSS、JavaScript 或 TypeScript(且不是外部文件)时才会出现,并且在项目的本地服务器运行之前一直是灰色的。服务器会在 编辑器 页面打开项目时自动启动,所以请稍等片刻。
我的页面无法通过编辑器的地球图标、在 DevBrowser 中打开 或运行面板中的按钮加载
它们使用正在运行的本地服务器的端口(8765 到 8774)。如果还没有服务器在运行,它们会退回到 http://localhost:8765/…,那里没有任何响应。请在 编辑器 页面打开项目(服务器由此启动),稍等片刻再试。
页面显示 404 和 Archivo no encontrado: <路径>
该页面来自项目的本地服务器,其文字始终是西班牙语。它所服务的项目中该路径下没有文件:请检查路径和文件名。
401 Unauthorized
本地服务器会对任何没有携带其凭据的请求返回这个响应。Dev Browser 会自己添加凭据,所以只有当同一个地址在其他应用或浏览器中打开时,你才会看到它。
403 Forbidden: Acceso denegado
该地址指向项目文件夹之外(例如带有 ../),服务器拒绝了它。请让路径保持在项目内。
显示 HTTP <状态码> <原因> 的红色提示
页面的主文档以错误状态码(400 或更高)响应(例如 HTTP 404 Not Found)。失败的图片、脚本和 API 调用不会弹出提示;请到 网络 中查找,那里错误状态会显示为红色。
WebView render process crashed. Reload the page.
页面的渲染进程已停止。PocketCode 保持打开:点击 重新加载。
显示其他消息的红色提示,并且页面无法加载
这是 WebView 针对主文档给出的原始错误文字,例如无法连接到服务器或无法解析域名。请检查地址和你的网络连接。请记住,对本地网络地址的纯 HTTP 访问会被阻止(见「限制」)。
无法捕获截图
目前还没有可供截取的页面视图。等页面出现后再试一次。
截图捕获失败
页面无法被绘制成图像,例如非常大的页面耗尽了内存。请尝试 截图(可见部分),而不是整页截图。
捕获 WebView 位图失败
可见部分无法转成图像:页面视图还没有尺寸,或者内存耗尽。等页面显示在屏幕上后再试一次。
截图保存失败
图像已经绘制完成,但 PNG 无法写入相册(或 Android 9 上应用的文件夹)。请检查设备是否有可用存储空间,然后再试一次。
整页截图后的提示以 已截断至5屏 结尾
截图画布(页面高度再加 45 % 的安全余量)超出了 20,000 px 高和 64 MB 的预算。页面非常高时,图像会在预算用完的地方停止;页面较矮时,图像可能已经包含整个页面,请看一下图像末尾。尽管字面如此,截断并不是按块数计算的。页面很高时,请滚动到你需要的部分,然后使用 截图。
无法清除站点数据
目前还没有页面视图。请先打开一个页面,再次使用 清除缓存。
没有网络活动
列表在主页面每次跳转时都会清空,只保存此后发出的请求。在打开 网络 标签页的状态下重新加载页面,即可再次看到它们。
没有存储数据
页面没有 localStorage、sessionStorage 或 Cookie(看不到 HttpOnly Cookie)。面板建议试试 google.com 这样的网站。
没有 DOM 树 和 加载页面后点击刷新
元素 显示的是一份快照,在你打开标签页或点击 刷新 DOM 时读取。请先加载页面,再刷新。
未检测到 CSS 规则
面板列出页面允许它读取的样式表中的顶层规则。如果页面的规则全部位于 @media 内,或者样式表来自其他网站,可能一条也不显示。
审计失败:Audit script returned no data
审计脚本没有返回任何内容,例如没有加载页面时。请加载页面,等它加载完成,然后再次点击 运行审计。
控制台显示 Permission denied by Dev Browser: <资源> 或 Geolocation denied by Dev Browser for origin: <来源>
页面请求了摄像头、麦克风或你的位置。Dev Browser 始终拒绝它们,并留下一条警告(Warning),让你知道请求为什么失败。
在编辑器中保存时,页面不会重新加载
自动重新加载只会在 AI 智能体写入文件时发生。手动保存不会触发它:请点击 重新加载。
Dev Browser is not open. Ask the user to open the Dev Browser, then call this tool again.
这是 AI 智能体的某个 browser_* 工具在 Dev Browser 关闭时给出的回答。请在你的页面上打开 Dev Browser,然后让智能体再试一次。