唉,为了这个小问题搞了两个星期,郁闷到了极点。 HRESULT IHTMLDocument::get_Script(IDispatch **p); 可以获得script的IDispatch,再往下就只能用IDispatch的Invoke()来执行script中的函数。达不到目的。网上找了些相关的例子,都是采用的方法子类化IDispatch的方法。如下: 无数次的查看msdn,突然发现put_onclick的反面不是get_onclick么。 VARIANT vOnclick; pElement->get_onclick(&vOnclick); 不管怎样总算可以交差啦。显然这种方法很无奈,我将它写下来,希望各位路过的人能有更好的办法。 评论列表 end2014/4/7 15:43:46
re: 用vc将js响应函数绑定到网页元素的办法 方法一: 用IHTMLWindow2::execScript,传入文本的script代码,比如 execScript("hiddenObject.onclick = function(){alert("");}") 方法二: 文中已有描述,就是实现IDispatch接口的对象 如果响应函数实现用script方便,那么就用方法一,如果响应函数用c/c++实现方便就用方法二 zgf的blog2014/4/7 15:43:46
re: 用vc将js响应函数绑定到网页元素的办法 现在不是执行而是绑定的问题呀。 因为不知道什么时候会执行,而绑定后事件一产生就会自动执行 end2014/4/7 15:43:46
re: 用vc将js响应函数绑定到网页元素的办法 就是绑定阿,仔细看看 hiddenObject.onclick = function(){alert("");} 执行这个赋值操作就是将hiddenObject这个元素(当然可以是任意页面元素)的onclick事件定义为匿名函数function(){alert("");},用execScript执行这段script又不会去执行alert(""),而要等到那个元素被click的时候才会 zgf的blog2014/4/7 15:43:46
re: 用vc将js响应函数绑定到网页元素的办法 呵呵,早知道就不用郁闷两星期啦 myy2014/4/7 15:43:46
re: 用vc将js响应函数绑定到网页元素的办法 这样试试看:(没实验过,不知道行不行) ------------------ 获得script的IDispatch后,用IDispatch反查IActiveScript,调用IActiveScript::GetScriptDispatch(...)查询js函数的IDispatch... http://msdn.microsoft.com/msdnmag/issues/0600/visualprog/default.aspx |
|