我用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"));
求高人讲讲这是个什么情况???

解决方案 »

  1.   

    感谢前辈捧场,我刚才在代码里加上Sleep观察出了端倪,我知道了是怎么回事:我的代码的确没有问题,问题是在那个网页中这个输入框上面还有两个下拉列表(select元素),其中第一个下拉列表我用代码让他自动选择并且触发了里面的onchange事件,紧接着我就对上述的text框赋值,这样就出了问题,因为第二个下拉列表会在我触发第一个下拉列表的onchange时自动做选择,其具体过程我猜想是javascript做的。但他一自动处理后,我在text框里赋的值也被它抹掉了(好像它刷新了一下,因速度过快,刚赋上值又被抹掉,结果我误以为put_value根本没赋值)。
    我应该等它自动选择好之后再用put_value赋值就问题了。