博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
客户端C++与前端js交互
阅读量:6821 次
发布时间:2019-06-26

本文共 1067 字,大约阅读时间需要 3 分钟。

客户端与前端交互

  1. qwebchannel.js文件引入
  2. 建立通信
//  c++发送消息给jsnew QWebChannel(qt.webChannelTransport, function(channel){    var content = channel.objects.jsContext;    //  建立通信后,客户端通过调用 sMsg 方法来执行后面的回调函数,从而实现c++与js交互    content.sMsg.connect(function (str) { //  str为客户端发送来的数据,交互数据一定是字符串格式      if(!str) return;      var question = typeof str === 'string' ? JSON.parse(str) : JSON.parse(JSON.stringify(str));      rMsg(question);    });    content.cBg.connect(function(data){//C++ 通过jsBridge更改背景色      cBg(data);    });    window.cjs = cjs })复制代码
//js调用c++的方法发送消息   window.cjs是初始化new QWebChannel之后绑定在window对象上的cjs。名字前后保持一致var loadComplate2C = {    "type" : "loadComplate",    "data" : "loadComplate"};loadComplate2C = JSON.stringify(loadComplate2C);window.cjs && window.cjs.jsToQt(loadComplate2C);复制代码

遇到的问题

  1. 时间点问题:new QWebChannel 的时间点一定尽早。在引入qwebchannel.js文件之后,在当前html文件里面。时间点如果不对,很有可能收不到客户端发送来的数据,因为客户端会在页面加载完成后直接发送,而此时如果new QWebChannel在外链js文件中,有可能没来得及执行。
  2. 参数传递问题:传递的参数都是string格式!
  3. 客户端本地上传文件拿到绝对路径,前端不能直接展示,因为chrome的安全策略,不允许前端读取本地路径的资源文件。

待完成

查看通信原理qwebchannel.js源代码,了解js和c++能够建立通信的原因

转载地址:http://klrzl.baihongyu.com/

你可能感兴趣的文章
玩转日志第一步,通过fluentd转存nginx日志
查看>>
awk 应用
查看>>
网站常见漏洞 -- 文件上传漏洞
查看>>
Struts2学习(六):访问隐藏的request和session
查看>>
结合项目实例 回顾传统设计模式(四)工厂模式(简单工厂、普通工厂、抽象工厂)...
查看>>
我了解的西安软件外包业务
查看>>
第57期:LPWAN技术之超窄带(UNB)浅析
查看>>
Frankfan7你问我答之一
查看>>
Windows XP启用ADMIN$默认管理共享
查看>>
RDIFramework.NET V2.9版本多语言的实现
查看>>
新内核的编译安装
查看>>
Azure实例级公共IP
查看>>
停电,导致DC无法启动
查看>>
MariaDB七之双主复制
查看>>
Sencha touch实践(1)在ios,android上变web app为native app
查看>>
XNA游戏:重力感应
查看>>
DNS服务部署的那点事儿
查看>>
【云计算的1024种玩法】使用 MSMTP 实现底层环境的 阿里云·邮件推送服务 兼容...
查看>>
Varnish介绍,安装与配置详解。
查看>>
CentOS bash漏洞威胁恐比“心脏流血”更大
查看>>