c++ - 通过 MSHTML 读取 "aria-label"返回 NULL

标签 c++ internet-explorer com mshtml

我正在尝试使用 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
}

getAttributeflags 参数使用 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/

相关文章:

oop - Scheme 可以与 Microsoft COM 一起使用吗?

c++ - 如何使用 C++ 将一串二进制数转换为带符号的十进制表示形式?

c++ - FFmpeg libswresample 链接器错误

javascript - IE9 中未定义初始传递的 For 循环索引

javascript - 如果 Div 位于 img 标签之上,则不会在 Div 上触发 Mousedown 事件 - 问题仅在 IE 中

html - <a href =""> 在 IE 中不起作用,但在 chrome 中起作用

c# - 此 COM 对象是否需要进行垃圾回收?

mfc - 我在 VS-2019 中缺少添加新项目 Add "MFC Class From Typelib"

c++ - 通过可变参数模板传递右值引用时出现编译器错误

c++ - boost asio ssl async_shutdown总是以错误结束?