本文介绍了IHTMLElement :: getAttribute()无法检索“占位符”输入元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于这样的输入编辑框

<input id="name" name="name" placeholder="Input Name ...">

我希望使用IHTMLElement :: getAttribute获取占位符属性文本,但它总是返回空字符串。

I wish to got placeholder attribute text using IHTMLElement::getAttribute, but it always returns empty string.

以下是我的代码

	std::wstring GetElementAttr(IHTMLElement* pElement, const std::wstring& szAttrName)
	{
        	if (!pElement) return L"";

		VARIANT szAttrValue;
		VariantInit(&szAttrValue);
		std::wstring szRet = L"";
		HRESULT hr = S_OK;

		hr = pElement->getAttribute(CComBSTR(szAttrName.size(), szAttrName.data()), 0, &szAttrValue);
		if (FAILED(hr)){
			VariantClear(&szAttrValue);
			return szRet;
		}
	
		if (szAttrValue.vt == VT_BSTR && szAttrValue.bstrVal){
			szRet = szAttrValue.bstrVal;
		}else if(szAttrValue.vt == VT_I4 ){
			szRet = string_utility::Int2String(szAttrValue.lVal);
		}
		
		VariantClear(&szAttrValue);
		return szRet;
	}

我尝试了第二种方式来使用IHTMLElement :: get_outerHTML,但它返回如下,占位符attr缺失

I tried second way to use IHTMLElement::get_outerHTML, but it returns as following with placeholder attr missing

<input id="name" name="name" placeholder="">

那么还有其他方法可以检索此HTML5属性吗?

So is there some other way to retrieve this HTML5 attribute?

推荐答案

浏览器窗口是否真正识别占位符?也许它目前处于IE7模式。

Is placeholder actually recognized by your browser window? Maybe it is currently in IE7 mode.


这篇关于IHTMLElement :: getAttribute()无法检索“占位符”输入元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-18 16:39