gpt4 book ai didi

c# - 为什么 MSHTML for .Net 没有 querySelector 和 querySelectorAll,或者它们在哪里?

转载 作者:行者123 更新时间:2023-12-02 01:32:30 28 4
gpt4 key购买 nike

我想在 IE 中使用 MSHTML [1] 访问 DOM,但我刚刚发现它缺少 HTML 文档类中的 querySelector 和 querySelectorAll 方法,否则这对于通过 CSS 选择器获取文档中的元素非常有帮助.

目前我能想到的唯一解决方法是通过执行脚本来完成所有操作,但这很糟糕。

是否有任何 MSHTML 版本具有这两种方法(querySelector 和 querySelectorAll)?是否有任何其他库(希望是 Microsoft 的官方 .Net 库)可以使用这两种方法或其等效方法?

[1]%ProgramFiles(x86)%\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll

最佳答案

querySelector() 方法及其 friend 在 MSHtml 和 IE DOM 中仍然存在,问题是大多数程序员在他们的机器上拥有的 PIA 已经严重过时了。我的机器上在 GAC 中注册的版本号是 7.0.3300.0,可以追溯到 2002 年。

有一个解决方法,您可以生成自己的互操作库并避免使用 GAC 中的库。诀窍是通过创建没有强名称的互操作程序集来故意生成不匹配,因此它无法与 GAC 中的程序集匹配。请务必仅在 VS2010 或更高版本上执行此操作,您想利用嵌入互操作类型功能。

启动 Visual Studio 命令提示符并导航到您的项目目录。并执行这个命令:

  Tlbimp c:\windows\system32\mshtml.tlb

它将运行几分钟,类型库非常大,并会发出几个看起来很恶心的警告,您可以忽略它们。返回 VS,删除现有的 MSHTML 引用并使用“添加引用”、“浏览”选项卡。选择 Tlbimp 生成的 MSHTML.dll 文件。

请记住,您现在使用的互操作库与您计算机上的 IE 版本兼容。不一定是您的用户拥有的版本,因此从技术上讲,您的程序可能会失败。你一定很不幸。

关于c# - 为什么 MSHTML for .Net 没有 querySelector 和 querySelectorAll,或者它们在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21166818/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com