如何接管CHtmlView的脚本引擎接口?

lgd_hit 2013-05-01 04:38:00
我想自己实现 IActiveScript IActiveScriptSite等接口,然后在自己的程序里,基于CHtmlView的程序里,把默认的脚本引擎接口等替换成我的,以此来控制脚本的执行等,该如何实现?
...全文
128 点赞 收藏 10
写回复
10 条回复
lgd_hit 2013年05月10日
看来没人能解决了
回复 点赞
redui 2013年05月07日
引用 7 楼 lgd_hit 的回复:
我接管脚本运行的出发点是想控制一些JS函数的执行,例如blur函数,它会使窗体Z-ORDER位置发生变化,还有网页关闭事件等,都想在JS接管的时候直接拦截和处理,因此想从IActiveScript等接口处理
你这个需求根本不需要用这种接管整个脚本引擎的方式解决,直接用JS代码就能搞定。自己保存原始的blur方法;实现一个替代的blur方法替换掉原始方法。
e.oldBlur = e.blur;
e.blur = function(){
  // do something or nothing, or call original method, such as: e.oldBlur();
};
别告诉我这个方法太复杂。
回复 点赞
lgd_hit 2013年05月07日
替换的方法有时候会不行,我目前就是采用这种方法,我再OnNavigateComplete和OnDocumentComplete里都加了替换函数,大部分时候是可以的,但是有时候也会不行,因为有时候会没等替换呢就已经执行完了,因此我考虑如何在更早的时机替换或者接管JS脚本对blur的执行
回复 点赞
lgd_hit 2013年05月06日
我接管脚本运行的出发点是想控制一些JS函数的执行,例如blur函数,它会使窗体Z-ORDER位置发生变化,还有网页关闭事件等,都想在JS接管的时候直接拦截和处理,因此想从IActiveScript等接口处理
回复 点赞
fishion 2013年05月05日
网上的一原话"IE用的是微软的脚本引擎规范,所以我把V8改造成符合微软规范的版本,然后在运行时替换jscript引擎。测试结果:通过。总体运行性能:不如原版,尤其在DOM访问速度上。"
回复 点赞
lgd_hit 2013年05月05日
有知道的朋友请与我沟通!
回复 点赞
lgd_hit 2013年05月02日
楼上的朋友,能否指点一二,你说的正是我想要的,我是开发浏览器的,希望跟你能有沟通和交流的机会,我QQ:50479329
回复 点赞
redui 2013年05月02日
这个技术是一层很高大的纸幕,虽然很薄,但就是看不见另一面。但是纸毕竟是薄的,只要选择了恰当的技术,一根针就能捅破它。当年我用V8改造JS引擎的时候,就成功地让IE用了我的引擎而不是系统自带的JSCRIPT。抱歉的是,这个技术我没有公开,只私下送给了几个圈内的朋友。
回复 点赞
wumn29 2013年05月02日
你应该是想让CHtmlView打开你本地的网页吧, 然后再这个网页里面执行你自己的js脚本?
回复 点赞
lgd_hit 2013年05月02日
自己UP一下
回复 点赞
发动态
发帖子
ATL
创建于2007-09-28

3025

社区成员

4.8w+

社区内容

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区公告
暂无公告