【发布时间】:2021-08-17 21:41:11
【问题描述】:
早在 2021 年 5 月 19 日,我写了 this Q&A 关于最近(4 月 21 日)对与 mshtml.dll 和后期绑定引用相关的界面的可疑更改。如果你愿意,这是第 2 部分。
之前,在诸如this 和this 之类的问题中,我曾说过mshtml.dll 对各种CSS 选择器缺乏支持,尤其是pseudo-classes。在上述问题中,我强调了nth-child() 和nth-of-type() 没有针对MSHTML 实现。
通常,如 here 所示,不支持的选择器语法会导致:
运行时错误“-2140143604 (8070000c)”:无法完成 由于错误 8070000c 导致的操作。
我预计有些事情会中断,因为不再支持与 Internet Explorer (IE) 相关的各种版本/平台(MSHTML 与之相关 - 请参阅我的 this。我没想到的
to find 是受支持的 CSS 选择器的最新改进。举个例子:
Option Explicit
''Required references:
'' Microsoft HTML Object Library
Public Sub CssTest()
Const URL = "https://books.toscrape.com/"
Dim html As MSHTML.HTMLDocument
Set html = New MSHTML.HTMLDocument
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.send
html.body.innerHTML = .responseText
End With
Debug.Print html.querySelector("meta:nth-of-type(2)").outerHTML
End Sub
在 21 年 4 月至 5 月之前,由于使用了未实现的语法,这可能会出错。
现在,在我的设置中,我在 5 月初(最新)期间看到了对 mshtml.dll 的更新,我得到的结果与我通过已支持的自动 Internet Explorer 实例运行它时的结果相同:
<meta name="created" content="24th Jun 2016 09:29">
那么,目前支持 VBA 的 CSS 选择器有哪些?
我已经涵盖了“我们为什么要关心?”在之前的问答中,这里不再赘述。但是,我将重新说明我的设置:
我的设置:
OS Name Microsoft Windows 10 Pro
Version 10.0.19042 Build 19042
System Type x64-based PC
Microsoft® Excel® 2019 MSO (16.0.13929.20206) 32-bit (Microsoft Office Professional Plus)
Version 2104 Build 13929.20373
mshtml.dll file 11.00.19041.985
ieframe.dll file 11.0.19041.964
反馈:
与之前的 Q&A 一样,如果对设置有/没有看到这些更改的任何反馈,我将不胜感激。我将对此添加反馈以供其他人参考。
【问题讨论】:
标签: vba css-selectors mshtml queryselector