跳转到内容
首页
Docs/Dev Browser

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:<端口>/<项目内文件的路径>
全屏编辑器的地球图标、在 DevBrowser 中打开 命令和运行面板中的按钮,都会向应用询问本地服务器实际获得的端口(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 树、在页面上选取元素、复制其选择器、高亮它。
CSSDevTools → 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 树,带元素选取器。
CSSCSS 编辑器和页面自身的规则。
性能加载时间、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 没有套餐限制:免费版和 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,然后让智能体再试一次。