В основном, мои объекты DOM настроены, и я вызываю метод .getAttribute для элемента IMG, который определен следующим образом:
<IMG style="WIDTH: 134px; HEIGHT: 75px;" src="...">
Предполагая, что hElement является ссылкой на объект вышеупомянутого элемента, когда явызовите следующее:
MsgBox hElement.getAttribute("style")
Я получаю следующее возвращаемое значение: только "ШИРИНА", то есть: часть, включающая и после: символ игнорируется.Чтобы добавить к этому, если я делаю hElement.getAttribute ("width") для элемента IMG, он возвращает фактическую ширину как "134", даже если у меня явно не определен атрибут width = "...".Итак, в основном, я спрашиваю, как я могу гарантировать, что я получаю обратно вещи в том виде, как они написаны, а не в том виде, в котором они восстанавливаются и хранятся в IE, поскольку это то, что, по-видимому, происходит с выводимым атрибутом WIDTH.Кроме того, не уверен, почему он игнорирует все, в том числе и после символа: рядом с ШИРОКОЙ - как я могу заставить это работать должным образом?
Странно, если я делаю следующее, он показывает все какдолжно быть:
hElement.outerHTML
Значение атрибута стиля показано, как определено выше.Если мне придется анализировать .outerHTML, чтобы получить правильные показания, это будет просто удручающе - я действительно разочарован наполовину запутанными усилиями MS.Если вы ищете что-то дополнительное для чтения, не стесняйтесь ссылаться на еще одну проблему, которую я отметил, об атрибутах, возвращающих странное поведение, когда используются заглавные буквы, а когда нет (решено с помощью хака).
Я использую VB6,но это все то же самое, mshtml.dll, я понимаю, я использую IHTMLElement для определения hElement, не уверен, должен ли я использовать что-то другое, но я думаю, что IHTMLElement хорош для IE6 + ...?
ОБНОВЛЕНИЕ:
Если я объявлю hElement как IHTMLElement5 или IHTMLElement6, тогда он будет работать, как и ожидалось.Если я использую любое из следующего, это не будет работать: IHTMLElement, IHTMLElement2, IHTMLElement3 и IHTMLElement4.Так как он идет только до 6, только 5 и 6 работают.Кажется, что они добавляются позже для более новых версий IE, и хотя вы не видите объект .getAttribute в intellisense в 2 и выше, вы все равно можете использовать его по какой-то причине (не уверен, если он основан на какой версии IEустановлено).Кто-нибудь знает, что означает IE IHTMLElement5 и IHTMLElement6?Как я могу получить согласованное поведение для IE6 +, поскольку у меня нет контроля над тем, какие версии установлены на клиентах.Если я использую IHTMLElement5 или IHTMLElement6, значит ли это, что он не будет работать на клиентах IE6?
Подробнее: получается, что IHTMLElement5 предназначен для IE8 +, а IHTMLElement6 - для IE9 + - есть идеи или рекомендации о том, как получить согласованное поведение для IE6 +?Спасибо.
ОБНОВЛЕНИЕ2: я добавил новый вопрос, который возникает из этого вопроса, его можно найти здесь для тех, кто заинтересован: Что происходит при использовании IHTMLElement5 / 6 (для IE8 / 9) в IE6/ 7?Отклоняет ли это поведение IHTMLElement?