我正在尝试使用 IE 的 getAttribute
读取 HTML 元素的 aria-label 属性C++/COM 中的方法,但尽管这适用于其他属性(包括 aria-labelledby),但它会为 aria-label 返回 VT_NULL。
我的代码示例如下所示:
CComVariant label;
elem->raw_getAttribute(CComBSTR(L"aria-label"), 0, &label);
if (label.vt == VT_BSTR && SysStringLen(label.bstrVal)) {
// This is never reached
}
当 getAttribute
的 flags
参数使用 2 时,我得到了相同的结果。
样本 HTML here .
当我尝试在浏览器的 JavaScript 中使用 getAttribute
时,效果很好,但由于某些原因,我无法使用 COM 访问此属性。
我是不是漏掉了什么?
最佳答案
根据我的经验,一些新的 HTML5 属性可以通过 DOM Level 3 访问 getAttributeNode
方法(在 IHTMLElement4
中可用)。
例如,使其适用于 placeholder
属性,我不得不使用 WebBrowser Feature Control并使用 <!DOCTYPE html>
为网页启用 HTML5和 <meta http-equiv="x-ua-compatible" content="IE=Edge"/>
(这在任何一种情况下都是一个好主意)。
关于c++ - 通过 MSHTML 读取 "aria-label"返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24105614/