mshtml.IHTMLElement getAttribute 不稳定行为

mshtml.IHTMLElement getAttribute erratic behaviour

在应用程序中,我使用 mshtml.IHTMLElement.getAttribute(mimetype) 提取 mshtml.HTMLDocument 中的 mimetype。

示例:

www.mywebsite.com/index.html。此网页有 1 个 mimetype,它是一个 Excel 工作簿。

Dim oHTML_Element As mshtml.IHTMLElement
Dim HTMLDoc As mshtml.HTMLDocument

HTMLDoc = CType(oBrowser.Document, mshtml.HTMLDocument)
'//mimtype = "Microsoft Office Excel 97-2003 Worksheet"

For Each oHTML_Element In HTMLDoc.getElementsByTagName("a")
   If oHTML_Element.getAttribute("mimetype") is Nothing then
        MsgBox ("NONE FOUND")

   Else
       MsgBox( oHTML_Element.getAttribute("mimetype").ToString())

   End If
End For

问题: 我 运行 这个应用程序位于位置 1(亚太地区),当我访问该网页时,我得到一个弹出窗口 MsgBox 显示 MIMETYPE 我的同事 运行 这个应用程序位于位置 2(亚洲),当他访问该网页时,他得到一个弹出窗口 MsgBox 显示 NONE FOUND。 网页访问不是问题,我们大约在同一时间访问网页,它是一个静态页面,换句话说,它不提供 MIMETYPE 基于地理位置的服务。他可以通过手动进入浏览器并单击 link.

来访问 Excel 工作簿

好的!我想我终于明白了!

这里的罪魁祸首是mimeType。在我的机器上,我安装了 MS Office 2010,而在我朋友的机器上,他安装了 Office 365。

在我的 C# 代码中,我在 mshtml.HTMLDocument 中搜索 mimeType = "Microsoft Office Excel 97-2003 Worksheet",它工作正常。现在,在我朋友机器上呈现的网页上搜索相同的 mimeType,得到 None。问题是当一台机器有 Office 365 时 XLS 得到一个 mimeType = "Microsoft Excel 97-2003 Worksheet" 而旧版本的 Office 得到 mimeType = "Microsoft Office Excel 97-2003 Worksheet"