在对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不兼容的问题。

关于Win8对getElementsByTagName等dom方法兼容性的替代方法的更多相关文章

  1. getColor()方法过时的替代方法

    Android SDK 升級到 23 之後,getResource.getColor(R.color.color_name) 過時 使用新加入的方法 ContextCompat.getColor(co ...

  2. DOM 之 document 查找元素方法

    DOM 之 document 查找元素方法 getElementById("idName"); // 始终取得第一个 idName 的元素 getElementsByTagName ...

  3. 《JavaScript+DOM编程艺术》的摘要(二)---DOM中的几个方法

    //DOM: //对象是一种独立的数据集合,与某个特定对象相关联的变量被称为这个对象的属性,通过某个特定对象可以为之调用的函数被称为这个对象的方法 // //4个非常实用的DOM方法: //检索特定元 ...

  4. HTML DOM对象的属性和方法

    HTML DOM对象的属性和方法 HTML DOM 对象有几种类型: 1.Document 类型 在浏览器中,Document 对象表示整个 HTML 文档. 1.1属性 引用文档的子节点 docum ...

  5. JS获取HTML DOM元素的8种方法

    什么是HTML DOM 文档对象模型(Document Object Model),是W3C组织推荐的处理可扩展置标语言的标准编程接口.简单理解就是HTML DOM 是关于如何获取.修改.添加或删除 ...

  6. HTML DOM对象的属性和方法介绍(原生JS方法)

    HTML DOM对象的属性和方法介绍 DOM 是 Document Object Model(文档对象模型)的缩写. DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口), ...

  7. HTML中DOM对象的属性和方法的层级关系是怎样的?(目录即层次)

    HTML中DOM对象的属性和方法的层级关系是怎样的?(目录即层次) 一.总结 一句话总结:目录就是测试题 1.document取得元素(get element)的方式有哪几种? 解答:四种,分别是id ...

  8. JS获取DOM元素的八种方法

    JS获取DOM元素的方法(8种) 通过ID获取(getElementById) 通过name属性(getElementsByName) 通过标签名(getElementsByTagName) 通过类名 ...

  9. Tomcat 在win7/win8 系统下tomcat-users.xml.new(拒绝访问)解决方法

    tomcat启动报错No UserDatabase component found under key UserDatabase 也可以这样处理 Tomcat 在win7/win8 系统下tomcat ...

随机推荐

  1. android code 和js的交互

    小弟现在需要android code 和js的交互.出现了问题,求大家带一带啊. 我的页面:<!DOCTYPE html><html lang="en">& ...

  2. 帝国cms 列表页分页样式修改美化【1】

    [1]自己修改帝国cms默认的分页样式(css),这样做的好处是你不用去改动帝国的核心文件,方便以后升级. [2]自己动手去修改帝国的分页(php+css),帝国的分页在e>class>下 ...

  3. Python3.4使用MySql

    如何在Django1.6结合Python3.4版本中使用MySql django默认的mysql连接是Mysqldb,悲催的是此版本只支持到python2.7,oracle官方的mysql-conne ...

  4. Colletion View 简单的备忘

    UIColletionView 这篇只是做UIColletionView的常用属性.代理方法和数据源方法的备忘,之后做一些自定义布局,增加删除动画等. UIColletionViewFlowLayou ...

  5. BZOJ 2226 LCMSum

    Description Given \(n\), calculate the sum \(LCM(1,n) + LCM(2,n) + \cdots + LCM(n,n)\), where \(LCM( ...

  6. CPU再烂,俺也支持虚拟化呀,再附送64位WINDOWS的IIS上配置支持PHP的注意事项

    原来要对IIS进行降权,让他可以支持32位程式     cscript.exe %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/App ...

  7. 浅析深究什么是SOA?(转)

    http://blog.vsharing.com/fengjicheng/A1059842.html 阅读提示: 本文探讨SOA概念背后的核心内涵,如何将SOA落地的实务方法. 金蝶中间件作为全球领先 ...

  8. Android 用代码来实现selector

    众所周知,android可以通过XML文件来创建selector,以Drawable对象的形式安装到组件上,以提供统一的风格设置.但是在某些时候,我们需要通过代码的形式来实现相同的功能,例如组件数量非 ...

  9. Android AlertDialog更改标题颜色,字体等

    更改AlertDialog标题的方法google目前没有提供,只能通过其他办法 一种办法是:首先在源代码中找到有个叫AlertController的类,这个类就是AlertDialog的实现类,是没有 ...

  10. bzoj1560

    首先这种题目肯定是要先排序,以x为第一关键字,y为第二关键字不难想到O(n2)的dp,下面显然要优化不难发现,由于两点的耗费是坐标差的平方的和,不带根号,因此,不难发现一个很有用的性质,如果从A点能到 ...