遇到很难解很奇怪的问题,求高人帮忙

狐独者 2013-09-02 03:24:47
我用MFC的WebBrowser控件打开一个网页,一般元素都能操控,但这次遇到个很奇怪的事:
网页中有一个input元素,源代码如下:
<input name="autopayPaymentFlow.customerNo" class="inp30" id="customid" onkeyup="this.value = this.value.replace(/[^a-zA-Z\d]/g,'')" onfocus="this.className='inp30-c';" onblur="this.className='inp30';" onbeforepaste="this.value = this.value.replace(/[^a-zA-Z\d]/g,'')" type="text"/>

这个input的type明明是text,但是我用IHTMLInputElement的put_value却对其不起作用,代码如下:
CComQIPtr< IHTMLElementCollection>spElementCollection;
spDocument2->get_all(&spElementCollection)
CComPtr<IDispatch> spDispHouseholdId;
spElementCollection->item(CComVariant("autopayPaymentFlow.customerNo"),CComVariant((long)0), &spDispHouseholdId); CComQIPtr<IHTMLInputElement>spHouseholdId=spDispHouseholdId;
//下面这一句执行根本没效果
spHouseholdId->put_value(CComBSTR("123456"));
求高人讲讲这是个什么情况???
...全文
94 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
狐独者 2013-09-02
  • 打赏
  • 举报
回复
感谢前辈捧场,我刚才在代码里加上Sleep观察出了端倪,我知道了是怎么回事: 我的代码的确没有问题,问题是在那个网页中这个输入框上面还有两个下拉列表(select元素),其中第一个下拉列表我用代码让他自动选择并且触发了里面的onchange事件,紧接着我就对上述的text框赋值,这样就出了问题,因为第二个下拉列表会在我触发第一个下拉列表的onchange时自动做选择,其具体过程我猜想是javascript做的。但他一自动处理后,我在text框里赋的值也被它抹掉了(好像它刷新了一下,因速度过快,刚赋上值又被抹掉,结果我误以为put_value根本没赋值)。 我应该等它自动选择好之后再用put_value赋值就问题了。
fishion 2013-09-02
  • 打赏
  • 举报
回复
我简单的测试过是没问题的,是不是网页上有多个同名的元素了

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧