YStudio Y++

浏览器(webbrowser)

Y++ / YStudio 开发文档 · 一点滴

选择器: webbrowser · 设计器组件: 浏览器 · 按名称: webbrowser#名称 或 #名称
运行时: WebView2(需本机安装 Edge WebView2 运行时)

硬约束与叠画

  1. 控件名来自窗口 XML「名称」;属性赋值无括号(如 标题 = "确定"),方法调用必须带括号(如 刷新())。
  2. 事件写 函数 控件名.事件名(参数…),形参类型以本页事件表为准。
  3. 任意控件客户区叠画用支持库 绘制类:绘制类 g → g.绑组件(本控件名)(组件名无引号)。画布场景编辑见 画布控件。
  4. 字体对象见绘制文档中的字体类;置字体(字体类) 将字体应用到本控件。
  5. 不要虚构未列出的方法;YSS 键见下文与 YSS.md。

属性

设计器属性面板与代码侧可读可写属性(来源:组件类库)。

属性 类型 读写 说明
提示 文本 读写 鼠标悬停时的提示文字
鼠标指针 文本 读写 空=默认;可用 arrow/hand/ibeam/cross/wait/no/sizeall 等预设,或.cur/.ani 路径(如 资源/press.cur)
左边 小数 读写 相对窗体左边的位置(像素)
顶边 小数 读写 相对窗体顶边的位置(像素)
宽度 小数 读写 控件宽度(像素)
高度 小数 读写 控件高度(像素)
停靠 整数 读写 0无 1上 2下 3左 4右 5填充;菜单/工具/状态栏仍用专用吸附
可见 逻辑 读写 真=显示,假=隐藏
启用 逻辑 读写 真=可用,假=禁用
句柄 长整数 只读 组件逻辑句柄(1 起,供动画类等绑定;非 HWND);只读
网址 文本 读写 初始/当前导航地址,如 https://example.com;运行时赋值等同导航()
缩放 整数 读写 百分比,100=100%,范围约 25~500;也可 置缩放/取缩放
允许新窗口 逻辑 读写 真=新窗口请求在本页打开(仍触发「新窗口请求」事件);假=拦截新窗口
静音 逻辑 读写 真=页面音频静音;也可 置静音()
圆角 整数 读写 像素,0=直角(设计期占位外观)
显示边框 逻辑 读写 真=显示边框
边框大小 整数 读写 像素
边框颜色 文本 读写 如 #RRGGBB
背景色 文本 读写 如 #1E1E1E(加载前占位底色)

方法

调用必须带括号。多数导航/脚本方法返回 逻辑(失败假)。缩放 1.0=100%。脚本对话框类型:0提示 · 1确认 · 2输入。下表为带类型签名。

方法 签名 返回 说明
导航 逻辑 导航(文本 网址或路径) 逻辑 http(s) 或本地 html
置HTML 逻辑 置HTML(文本 内容) 逻辑
后退 逻辑 后退() 逻辑
前进 逻辑 前进() 逻辑
重新加载 逻辑 重新加载() 逻辑
强制刷新 逻辑 强制刷新() 逻辑
停止 逻辑 停止() 逻辑
可否后退 逻辑 可否后退() 逻辑
可否前进 逻辑 可否前进() 逻辑
取网址 文本 取网址() 文本
取文档标题 文本 取文档标题() 文本
执行脚本 文本 执行脚本(文本 脚本) 文本
取HTML 文本 取HTML() 文本
取选中文本 文本 取选中文本() 文本
打印 逻辑 打印() 逻辑
打开开发者工具 逻辑 打开开发者工具() 逻辑
置缩放 逻辑 置缩放(小数 倍率) 逻辑 1.0=100%
取缩放 小数 取缩放() 小数
发消息到网页 逻辑 发消息到网页(文本 消息) 逻辑 网页侧收消息
注入脚本 逻辑 注入脚本(文本 脚本) 逻辑
置Cookie 逻辑 置Cookie(文本 名称, 文本 值, 文本 域, 文本 路径) 逻辑
取Cookie 文本 取Cookie(文本 名称, 文本 网址) 文本
清除Cookie 逻辑 清除Cookie() 逻辑
清除缓存 逻辑 清除缓存() 逻辑
捕获截图 逻辑 捕获截图(文本 文件路径) 逻辑 PNG
置静音 逻辑 置静音(逻辑 静音) 逻辑
置用户代理 逻辑 置用户代理(文本 代理串) 逻辑 空串恢复默认
取用户代理 文本 取用户代理() 文本
是否就绪 逻辑 是否就绪() 逻辑 就绪后再导航/脚本更安全
查找 逻辑 查找(文本 关键词) 逻辑
查找下一个 逻辑 查找下一个() 逻辑
停止查找 逻辑 停止查找() 逻辑
调用调试协议 文本 调用调试协议(文本 方法, [文本 参数JSON="{}"]) 文本 DevTools
移动 无 移动(小数 左边, 小数 顶边, [小数 宽度], [小数 高度]) 无 可选同时改宽高
置焦点 无 置焦点() 无
刷新 无 刷新() 无
显示 无 显示() 无 等同 可见 = 真
隐藏 无 隐藏() 无 等同 可见 = 假
订阅/取消订阅调试事件 逻辑 *(文本 事件名) 逻辑
置字体 逻辑 置字体(字体类 字体) 逻辑
如果 (浏览器1.是否就绪()) {
    浏览器1.导航("https://www.example.com")
}
文本 t = 浏览器1.执行脚本("document.title")

事件

在代码中写 函数 控件名.事件名(...) 处理。专用:

事件 参数
开始导航 文本 网址
导航完成 文本 网址, 逻辑 成功, 整数 状态码
标题改变 / 网址改变 文本 …
历史改变 逻辑 可后退, 逻辑 可前进
新窗口请求 / 下载开始 / 证书错误 文本 网址
收到网页消息 文本 消息
权限请求 文本 内容, 整数 类型
脚本对话框 文本 内容, 整数 类型
就绪 无
全屏改变 逻辑 全屏
收到调试事件 文本 消息

其余鼠标/焦点事件见下表。

事件 参数 说明
单击 整数 X, 整数 Y 鼠标左键单击控件。
双击 整数 X, 整数 Y 鼠标左键双击控件。
右键单击 整数 X, 整数 Y 鼠标右键单击控件。
鼠标按下 整数 X, 整数 Y, 逻辑 按下 鼠标键在控件上按下。按下=真表示当前仍按住。
鼠标抬起 整数 X, 整数 Y, 逻辑 按下 鼠标键在控件上放开。
鼠标移动 整数 X, 整数 Y, 逻辑 按下 鼠标在控件上移动。按下表示左键是否按住。
鼠标进入 整数 X, 整数 Y 鼠标指针进入控件区域。
鼠标离开 整数 X, 整数 Y 鼠标指针离开控件区域。
鼠标左键单击 整数 X, 整数 Y 鼠标左键单击(与「单击」同时触发)。
鼠标左键双击 整数 X, 整数 Y 鼠标左键双击(与「双击」同时触发)。
鼠标中间单击 整数 X, 整数 Y 鼠标中键单击控件。
鼠标齿轮滚动 整数 X, 整数 Y, 逻辑 向上 在控件上滚动鼠标滚轮。向上=真表示向上滚。
鼠标右键单击 整数 X, 整数 Y 鼠标右键单击(与「右键单击」同时触发)。
鼠标右键双击 整数 X, 整数 Y 鼠标右键双击控件。
开始导航 文本 网址 即将导航到新地址时触发(含 导航/置HTML/前进后退)。参数:文本 网址。
导航完成 文本 网址, 逻辑 成功, 整数 状态码 页面导航结束时触发。参数:文本 网址, 逻辑 成功, 整数 状态码(HTTP;失败时可能为 0)。
标题改变 文本 标题 文档标题变化时触发。参数:文本 标题。
网址改变 文本 网址 当前页 URI 变化时触发(地址栏同步用)。参数:文本 网址。
历史改变 逻辑 可后退, 逻辑 可前进 前进/后退可用性变化时触发。参数:逻辑 可后退, 逻辑 可前进。
下载开始 文本 网址 开始下载时触发。参数:文本 网址。
权限请求 文本 内容, 整数 类型 页面请求权限(相机/麦克风/地理位置等)。参数:文本 内容, 整数 类型。
脚本对话框 文本 内容, 整数 类型 alert/confirm/prompt。参数:文本 内容, 整数 类型(0提示/1确认/2输入)。
就绪 无 WebView2 控件创建完成、可调用导航/脚本等方法时触发(建议在此再 导航)。
全屏改变 逻辑 全屏 页面全屏元素进入/退出时触发。参数:逻辑 全屏。
证书错误 文本 网址 HTTPS 证书错误时触发。参数:文本 网址。
函数 浏览器1.单击 (整数 X, 整数 Y) {
    // …
}

YSS 样式

以下为样式表(.yss)键与示例;写样式前请先读窗体 XML 取控件 名称 与 typeId,见 window-xml.md。

布局与子选择器

设计期为占位绘制(标注「设计预览」);F5/发布后才创建真实 WebView2。建议在「就绪」事件后再导航或置 HTML。

属性说明(逐键)

浏览器以网页内容为主,YSS 只管控件外壳(加载前底色与边框),不样式化页内 DOM。网址、UA、缩放、静音等用属性面板或代码(见「代码侧」)。

属性 作用 取值 / 范围 说明与注意
background-color / background 加载前占位底色 颜色,如 #1E1E1E 设计期占位与 WebView2 创建前可见
border-color 外壳边框色 颜色
border-width 外壳边框宽 像素
border-radius 外壳圆角 像素 只圆角外壳,不裁剪网页(WebView2 HWND 叠层)
show-border 是否画外壳边框 true/false

嵌入资源 HTML: 导航(":/页.html") 会物化为临时 file://;页内相对路径的 css/图片/脚本可能失效,请内联或改用绝对 :/…。详见 resource-embed.md。

XML / 设计器 ↔ YSS

设计器 / 代码 YSS
外壳底色 / 边框 / 圆角 background-color、border-*、show-border、border-radius(不裁剪网页)
网址、UA、缩放、静音、HTML 属性或代码,不是 YSS
页内 CSS / DOM 网页自己写;YSS 管不到 WebView2 内容

使用示例

深色外壳边框:

webbrowser#浏览器1 {
    background-color: #1E1E1E;
    border-color: #5A5A5A;
    border-width: 1;
    border-radius: 4;
    show-border: true;
}

无边框占位底:

webbrowser#内嵌页 {
    background-color: #FFFFFF;
    show-border: false;
}

完整示例

webbrowser {
    background-color: #1E1E1E;
    border-color: #5A5A5A;
    border-width: 1;
    border-radius: 4;
    show-border: true;
}

webbrowser#浏览器1 {
    background-color: #101010;
    border-radius: 6;
}