关于Win8对getElementsByTagName等dom方法兼容性的替代方法
2024-10-14 13:56:12
在对Twebbrowser进行dom编程时,引用MSHTML并使用其中的HTMLDocument; IHTMLElementCollection;IHTMLElement;能获得较好的代码提示
其中封装的一些方法如getElementsByTagName也能较好的在xp、vista、win7等系统中使用,但是一旦到了win8系统,getElementsByTagName就不能获取IHTMLElementCollection了,如果你下一步想遍历IHTMLElementCollection就会提示‘对象未实现’的错误提示,然后程序崩溃。例如我封装的一个方法:
function FindElementByClassName(Doc: HTMLDocument; TagName, ClassName: String)
: IHTMLElement;
var
Elements: IHTMLElementCollection;
Element: IHTMLElement;
I: Integer;
begin
Result := nil;
Elements := Doc.getElementsByTagName(TagName);
for I := 0 to Elements.length - 1 do
begin
Element := Elements.Item(I, varEmpty) as IHTMLElement;
if Element._className = ClassName then
begin
Result := Element;
exit;
end;
end;
end;
从指定的Doc中根据TagName获取指定的ClassName元素,这个代码在Win8\8.1中是会报错的。
我推测出错的原因可能是MSHTML对Win8支持不好,可能有些方法需要重新封装。
目前解决的办法只好放弃MSHTML改用Variant来代替HTMLDocument; IHTMLElementCollection;IHTMLElement;
Doc.getElementsByTagName(TagName)换成wbIE.OleObject.document.getElementsByTagName(TagName)来用,能解决win8不兼容的问题。
最新文章
- centos 7 安装音乐播放器(亲测可用)(转载)
- eclipse配置c开发环境
- linux如何修改主机名
- LintCode ";Digit Counts"; !!
- c语言学习的第10天
- Java实现Mysql数据导入导出
- Careercup - Facebook面试题 - 5733320654585856
- matlab怎么同时显示imshow 两幅图片
- CentOS根分区占满
- 论MySQL何时使用索引,何时不使用索引
- 在windows 10 上使用aspnet_regiis.exe -i 命令报 “此操作系统版本不支持此选项” 的解决办法
- Android NDK学习(一):目录结构解析
- 超详细Gitlab Runner环境配置中文教程
- Android定位&;地图&;导航——基于百度地图,实现自定义图标绘制并点击时弹出泡泡
- CentOS7下-bash: nano: command not found
- 获取Android文件路径
- sql语句:查询、排序、不区分大小写查询,及联合使用
- 《TCP/IP 详解 卷1:协议》第 2 章:Internet 地址结构
- Centos7更改yum源与更新系统
- 在Angular中定义共享的Providers