当前位置: 首页 > wzjs >正文

网站制作协议书友好链接

网站制作协议书,友好链接,东莞网站建设方案,东莞网站快速排名优化Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…

        Chrome 前端(即页面 JS / Web UI)与客户端(C++ 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改造浏览器底层的开发者。


🔧 典型交互场景分类

场景描述技术路径
1️⃣ WebUI 页面与 C++ 后端交互如设置页、扩展页等WebUI <-> WebUIMessageHandler
2️⃣ 页面 JS 与 Extension 后端如插件调用 chrome.runtime.sendMessageJS <-> Mojo / native extension API
3️⃣ 页面 JS 与 Native 功能交互如调用浏览器硬件能力JS <-> Mojo / C++ Impl


📍 框架组件总览图


1️⃣ WebUI 页面交互机制详解

▶ 构成组件

  • 前端:WebUI HTML + JS 页面,嵌入在 chrome://browser://

  • 后端:继承自 content::WebUIController + WebUIMessageHandler

▶ 流程详解

  1. 前端 JS 发起调用

    chrome.send("MyFunctionName", [arg1, arg2]);
  2. 后端 C++ 注册 handler

    void MyHandler::RegisterMessages() override {web_ui()->RegisterMessageCallback("MyFunctionName",base::BindRepeating(&MyHandler::OnMyFunction, base::Unretained(this)));
    }void MyHandler::OnMyFunction(const base::Value::List& args) {// 处理参数,回调 JSFireWebUIListener("on-data-ready", data);
    }
  3. 后端回调前端

    cr.addWebUIListener("on-data-ready", (data) => { ... });

▶ 应用场景

  • 设置页 (chrome://settings)

  • 下载页、扩展页、历史页等


2️⃣ Extension 与 Native 通信机制

▶ 构成组件

  • JS:使用 chrome.runtime.sendMessagechrome.extension.getBackgroundPage()

  • 后端:继承 ExtensionFunction 并注册到 ExtensionFunctionRegistry

▶ 流程示意

chrome.runtime.sendMessage({cmd: "doSomething"}, function(response) {console.log("Response:", response);
});// C++ Extension Function 实现
class DoSomethingFunction : public ExtensionFunction {public:ResponseAction Run() override {// 处理逻辑...return RespondNow(OneArgument(base::Value("OK")));}
};// 注册宏
EXTENSION_FUNCTION_NAME("extensionInternal.doSomething")

✅ Chrome 扩展调用的是基于 IPC 和 Mojo 的通道,最终由浏览器进程分发请求到对应 ExtensionFunction。


3️⃣ Mojo 通信机制(JS <-> Mojo <-> C++)

适用于较底层的交互,如性能数据、打印、系统 API 等。

▶ 构成组件

  • 前端:JS Binding(*.mojom-webui.js

  • 后端:C++ Mojo Impl(绑定接口实现)

  • 通道:RenderFrameHost->GetRemoteInterfaces() or WebUIDataSourceWithMojo

▶ 示例流程

// JS 侧
mojo.bindInterface('my_namespace.MyInterface');
myInterface.doSomething().then((result) => { ... });// mojom 定义
interface MyInterface {DoSomething() => (string result);
}// C++ 实现并绑定
class MyInterfaceImpl : public mojom::MyInterface {public:void DoSomething(DoSomethingCallback callback) override {std::move(callback).Run("Done!");}
};web_ui()->BindInterface(std::make_unique<MyInterfaceImpl>());

🔄 JS 与 C++ 通信方式对比总结

通信方式特点适用场景
chrome.send()简单、基于 WebUI Message内部页面(如 chrome://*
chrome.runtime.sendMessage()基于扩展 IPC,功能强大插件调用浏览器能力
Mojo模块化、高性能、支持多进程深层系统通信(如 Debug、音频)
http://www.dtcms.com/wzjs/143867.html

相关文章:

  • 集团网站建设需求自助建站网
  • java网站开发优缺点百度指数的使用
  • 做网站的思路产品线上推广渠道
  • 知名跟单网站做信号提供方百度竞价是什么工作
  • 厦门seo报价惠州百度seo在哪
  • 东营网站制作团队网盘资源搜索神器
  • 成都高标建设有限公司官方网站今天的新闻 联播最新消息
  • 在线qq登录入口太原seo计费管理
  • 可以网上做单的网站谷歌ads广告投放
  • net 网站开发整站优化方案
  • 平面设计做兼职网站qq引流推广软件哪个好
  • 附近的装修公司地点网站优化有哪些类型
  • cc域名做网站怎么样百度小说风云榜排名
  • 自己做ppt网站吗软文是什么
  • 哪里购买网站空间灰色词排名推广
  • 湖南微信网站东莞seo代理
  • 专注高密做网站的推广产品怎么发朋友圈
  • 巢湖网站开发网站运营推广的方法有哪些
  • 如果安装wordpress主题成都爱站网seo站长查询工具
  • 佛山 顺德网站设计广州seo推广培训
  • 什么公司时候做网站广州权威发布
  • 网站运营怎样做百度收录网站链接入口
  • 企业网站 程序网站优化推广招聘
  • 网站中的宣传册翻页动画怎么做磁力神器
  • 服务器和电脑主机的区别宿州百度seo排名软件
  • 上海做网站公司做网站的公司百度短链接在线生成
  • 烟台门户网站建设国内比较好的软文网站
  • 山西 网站制作如何在百度发布信息推广
  • 网站建设可以自己建设服务器吗常用的网络营销方式
  • 学ps做兼职的网站有哪些seo研究中心qq群