为什么element.getAttribute(“style”)忽略冒号“”之后的所有内容:";性格仅返回部分值

本文关键字:quot 返回部 style getAttribute element 为什么 之后 | 更新日期: 2023-09-27 18:27:04

基本上,我已经设置了DOM对象,并在IMG元素上调用.getAttribute方法,该元素定义如下:

<IMG style="WIDTH: 134px; HEIGHT: 75px;" src="...">

假设hElement是上述元素的对象引用,当我调用以下内容时:

MsgBox hElement.getAttribute("style")

我得到以下返回:"WIDTH"only,即:部分包括和后面的:字符被忽略。此外,如果我对IMG元素执行hElement.getAttribute("width"),它会将实际宽度返回为"134",即使我没有明确定义width="…"属性。所以,基本上,我在问,我如何确保我能在写东西的时候得到它们,而不是在IE重建和存储它们的时候,因为这似乎是对推断的WIDTH属性所做的。此外,也不确定为什么它忽略了WIDTH旁边的:字符及其后的所有内容——我如何才能使其正常工作?

奇怪的是,如果我做以下操作,它会显示出它应该显示的一切:

hElement.outerHTML

样式属性的值如上文所定义。如果我必须解析outerHTML才能获得正确的读数,那将是令人沮丧的——我真的对MS半生不熟的工作感到失望。如果你正在寻找额外的阅读内容,请随意参考我注意到的另一个问题,即属性在使用大写字母和不使用大写字母时返回奇怪的行为(通过破解解决)。

我正在使用VB6,但一切都一样,mshtml.dll,我收集,我正在使用IHTMLElement来定义hElement,不确定我是否应该使用其他东西,但我认为IHTMLElement对IE6+有好处。。。?

更新:

如果我将hElement声明为IHTMLElement5或IHTMLEElement6,则它按预期工作。如果我使用以下任何一个,它都不起作用:IHTMLElement、IHTMLElement2、IHTMLlement3和IHTMLlement4。由于它只上升到6,所以只有5&6工作。这些似乎是稍后为新版本的IE添加的,尽管您在2及更高版本的intellisense中没有看到.getAttribute对象,但出于某种原因,您仍然可以使用它(不确定它是否基于安装的IE版本)。有人知道IE IHTMLElement5和IHTMLEElement6代表什么版本吗?我如何才能获得IE6+的一致行为,因为我无法控制客户端上安装的版本。如果我使用IHTMLElement5或IHTMLEElement6,这是否意味着它在IE6客户端上不起作用?

更多信息:事实证明IHTMLElement5适用于IE8+,IHTMLEElement6适用于IE9+——关于如何为IE6+获得一致的行为,有什么想法或建议吗?谢谢

更新2:我添加了一个新问题,它源于这个问题,感兴趣的人可以在这里找到:在IE6/7中使用IHTMLElement5/6(用于IE8/9)时会发生什么?它是否转移到IHTMLElement行为?

为什么element.getAttribute(“style”)忽略冒号“”之后的所有内容:";性格仅返回部分值

您可能想看看这个http://robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/

因此,在您的情况下,您应该尝试使用cssText属性,它将返回一个由所有css属性组成的字符串

hElement.style.cssText

标志不再受支持?http://msdn.microsoft.com/en-us/library/ms536429%28v=vs.85%29.aspx

然而,这是有效的:

styleContent=hElement.style.cssText;

getAttribute('style')似乎返回了一个对象,而不是属性的值,因为下面的代码也起作用。

styleContent=hElement.getAttribute('style').cssText;
相关文章: