怎么接管CHtmlView的脚本引擎接口
如何接管CHtmlView的脚本引擎接口?
我想自己实现 IActiveScript IActiveScriptSite等接口,然后在自己的程序里,基于CHtmlView的程序里,把默认的脚本引擎接口等替换成我的,以此来控制脚本的执行等,该如何实现?
------解决方案--------------------
这个技术是一层很高大的纸幕,虽然很薄,但就是看不见另一面。但是纸毕竟是薄的,只要选择了恰当的技术,一根针就能捅破它。当年我用V8改造JS引擎的时候,就成功地让IE用了我的引擎而不是系统自带的JSCRIPT。抱歉的是,这个技术我没有公开,只私下送给了几个圈内的朋友。
------解决方案--------------------
网上的一原话"IE用的是微软的脚本引擎规范,所以我把V8改造成符合微软规范的版本,然后在运行时替换jscript引擎。测试结果:通过。总体运行性能:不如原版,尤其在DOM访问速度上。"
------解决方案--------------------
你这个需求根本不需要用这种接管整个脚本引擎的方式解决,直接用JS代码就能搞定。自己保存原始的blur方法;实现一个替代的blur方法替换掉原始方法。
别告诉我这个方法太复杂。
我想自己实现 IActiveScript IActiveScriptSite等接口,然后在自己的程序里,基于CHtmlView的程序里,把默认的脚本引擎接口等替换成我的,以此来控制脚本的执行等,该如何实现?
------解决方案--------------------
这个技术是一层很高大的纸幕,虽然很薄,但就是看不见另一面。但是纸毕竟是薄的,只要选择了恰当的技术,一根针就能捅破它。当年我用V8改造JS引擎的时候,就成功地让IE用了我的引擎而不是系统自带的JSCRIPT。抱歉的是,这个技术我没有公开,只私下送给了几个圈内的朋友。
------解决方案--------------------
网上的一原话"IE用的是微软的脚本引擎规范,所以我把V8改造成符合微软规范的版本,然后在运行时替换jscript引擎。测试结果:通过。总体运行性能:不如原版,尤其在DOM访问速度上。"
------解决方案--------------------
你这个需求根本不需要用这种接管整个脚本引擎的方式解决,直接用JS代码就能搞定。自己保存原始的blur方法;实现一个替代的blur方法替换掉原始方法。
e.oldBlur = e.blur;
e.blur = function(){
// do something or nothing, or call original method, such as: e.oldBlur();
};
别告诉我这个方法太复杂。