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

本文共 1119 字,大约阅读时间需要 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++能够建立通信的原因

转载于:https://juejin.im/post/5c19b6066fb9a049e412a48c

你可能感兴趣的文章
Ubuntu18.04中配置QT5.11开发环境
查看>>
Exception的妙用
查看>>
基于浏览器的开源“管理+开发”工具,Pivotal MySQL*Web正式上线!
查看>>
JavaScript(五):变量的作用域
查看>>
知识图谱在互联网金融中的应用
查看>>
MySQL 到底能不能放到 Docker 里跑?
查看>>
wpf 自定义窗口,最大化时覆盖任务栏解决方案
查看>>
【docker】关于docker 中 镜像、容器的关系理解
查看>>
information_schema系列五(表,触发器,视图,存储过程和函数)
查看>>
瓜子二手车的谎言!
查看>>
[转]使用Git Submodule管理子模块
查看>>
DICOM简介
查看>>
Scrum之 Sprint计划会议
查看>>
List<T> to DataTable
查看>>
[Java]Socket和ServerSocket学习笔记
查看>>
stupid soso spider
查看>>
svn命令在linux下的使用
查看>>
There is insufficient system memory to run this query 错误
查看>>
基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
查看>>
我们奋斗着并将持续奋斗 ----暨清华D-Lab创新基地揭牌仪式
查看>>