VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1385|回复: 12

【求助】开源谷歌浏览器的问题

[复制链接]
24_avatar_middle
最佳答案
0 
在线会员 发表于 2016-1-9 12:11:16 | 显示全部楼层 |阅读模式
最近领导叫我研究谷歌开源浏览器  JS和C++数据交互的部分,好不容易下了谷歌浏览器源码(好庞大啊),虽然编译不过,不过想了想也不关紧要,只要能找到源码里相关交互代码就行了,于是,先考虑用谷歌浏览器先找出JS是怎么跟c++交互的,打开谷歌浏览器在调试那里设置js的断点,断下,成功找到了 js 的通讯函数  chrome.send (好像就是这个),这个函数是js里找不到实现体的,估计是直接调用c++的相关函数了,现在想问下,JS里调用chrome.send函数后,会执行谷歌源码里C++的哪个函数? 本人比较菜,在庞大的谷歌源码里找了4-5天也找不到,还望知道的告诉下(最好能给出源码文件名和函数名称),万分感谢!




上一篇:关于CView 的问题,求解释
下一篇:post获取返回信息不成功?
51_avatar_middle
最佳答案
83 
online_admins 发表于 2016-1-9 13:30:36 | 显示全部楼层
谷歌浏览器里面的 JS 脚本引擎是 V8,所以 js 的代码都是通过 V8 来解释执行的,这是大的方面,至于你说的:“JS里调用chrome.send函数后,会执行谷歌源码里C++的哪个函数?”这个还真没找过,这么大量的代码,找起来不容易啊
24_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-1-9 14:23:40 | 显示全部楼层
本帖最后由 284406022 于 2016-1-9 14:26 编辑
Syc 发表于 2016-1-9 13:30
谷歌浏览器里面的 JS 脚本引擎是 V8,所以 js 的代码都是通过 V8 来解释执行的,这是大的方面,至于你说的 ...


听你这么说,那流程应该是   JS ----> V8解析------->C++函数  那我应该往 V8解析后面找了, 源码里面也有个V8工程
51_avatar_middle
最佳答案
83 
online_admins 发表于 2016-1-9 14:25:17 | 显示全部楼层
284406022 发表于 2016-1-9 14:23
听你这么说,那流程应该是   JS ----> V8解析------->C++函数  那我应该往 V8解析后面找了

没错的。。。
24_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-1-9 14:28:12 | 显示全部楼层
Syc 发表于 2016-1-9 14:25
没错的。。。

你说有没可能   JS 不用V8解析而直接调用c++函数?
51_avatar_middle
最佳答案
83 
online_admins 发表于 2016-1-9 14:39:23 | 显示全部楼层
284406022 发表于 2016-1-9 14:28
你说有没可能   JS 不用V8解析而直接调用c++函数?

那不可能,JS 是脚本语言,必须通过脚本引擎来解析才行,没有中间的这个桥梁是行不通的
24_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-1-9 15:16:11 | 显示全部楼层
Syc 发表于 2016-1-9 14:39
那不可能,JS 是脚本语言,必须通过脚本引擎来解析才行,没有中间的这个桥梁是行不通的

也对, 像LUA这些都要解析, 像window.external.Invoke 这个应该相当于解析器了
98_avatar_middle
最佳答案
0 
online_moderator 发表于 2016-1-9 16:04:51 | 显示全部楼层
题主,我觉你是不是搞错方向了。最近领导叫我研究谷歌开源浏览器  JS和C++数据交互的部分 我觉这个你的领导应该需要你写类似有道词典,或者网易云类似的软件吧,不然要看这方面代码有什么意义。如果这样的话,你直接下载cef,就可以了。这个js与c++很容易比用ie 控件强很多,IE控件还要写额外的代码。
24_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-1-9 18:33:10 | 显示全部楼层
小鱼儿 发表于 2016-1-9 16:04
题主,我觉你是不是搞错方向了。最近领导叫我研究谷歌开源浏览器  JS和C++数据交互的部分  我觉这个你的领 ...

没搞错啊,是  研究谷歌开源浏览器啊,叫我看看js和c++通讯的开源代码
98_avatar_middle
最佳答案
0 
online_moderator 发表于 2016-1-9 19:28:41 | 显示全部楼层
284406022 发表于 2016-1-9 18:33
没搞错啊,是  研究谷歌开源浏览器啊,叫我看看js和c++通讯的开源代码

那目的是什么呢?单纯研究js与c++ 调用,那还不直接研究v8代码。
24_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-1-10 22:49:46 | 显示全部楼层
本帖最后由 284406022 于 2016-1-10 22:51 编辑
小鱼儿 发表于 2016-1-9 19:28
那目的是什么呢?单纯研究js与c++ 调用,那还不直接研究v8代码。


嗯,现在正有此意了,不过以我目前的水平还不知道能不能研究个所以然来,哎,反正领导安排了,就啃啃代码吧
74_avatar_middle
最佳答案
0 
在线会员 发表于 2016-1-12 15:16:30 | 显示全部楼层
我覺得你上級 應該是想 在你們某個程序中 嵌入 js 腳本吧
那直接研究v8 不需要看 chromium的 而且 google官方給出了文檔 應該如何與c交互

其次 如果你們項目比較小 沒必要嵌入v8 會讓程序變太大的 而且編譯v8的 各種工具依賴代碼在大陸都被gwf封了的 編譯很麻煩
如果 不是 很在乎效率的 項目 可用 用 duktape 一個很簡單的 c實現的 js開源(MIT)引擎
其次 雖然很喜愛v8但我更愛嵌入lua lua一開始就是為嵌入宿主設計的 很多時候會比v8用起來方便的多(除了 沒有continue 索引從1開始 lua就沒多少令人厭惡的了)
24_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-1-13 09:48:57 | 显示全部楼层
zuiwuchang 发表于 2016-1-12 15:16
我覺得你上級 應該是想 在你們某個程序中 嵌入 js 腳本吧
那直接研究v8 不需要看 chromium的 而且 google ...

你分析得很到位
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-11-27 01:29

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表