Что нового

[Сеть, интернет] Изменение стиля html-элемента в InetrnetExplorer

kvitaliy

Новичок
Сообщения
10
Репутация
0
Добрый день!
Подскажите, пожалуйста, каким образом можно решить такую задачу.
Положим, мы зашли с помощью IE на какую-то страницу сайта:
[list type=decimal]
[*]как получить доступ к нужному DOM-элементу
[*]как изменить отображение выбранного элемента (например, нарисовать вокруг него границу заданной толщины и цвета).
[/list]
Спасибо!
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
_IEDocGetObj
- получаем объект
Код:
_IEDocWriteHTML
- изменяем документ. это не пробовал
 
Автор
K

kvitaliy

Новичок
Сообщения
10
Репутация
0
axlwor,
мне бы пример посмотреть по изменению стиля элементов.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Вы это имели в виду?
Код:
#include <IE.au3>
$oIE = _IECreate("http://google.ru")
$oLink = _IETagNameGetCollection($oIE, "a", 0)

_IELinkPropertySet($oLink, "Русское сообщество AutoIt", "http://autoit-script.ru/index.php/topic,2897.0.html")

Func _IELinkPropertySet($o_Obj, $s_InnerText, $s_Href)
    $o_Obj.innertext = $s_InnerText
    $o_Obj.href = $s_Href
EndFunc
 
Автор
K

kvitaliy

Новичок
Сообщения
10
Репутация
0
Garrett,
в IE8 почему-то не работает... ссылка не добавилась на страницу.
в принципе, меня не только ссылки интересуют, хотелось бы иметь возможность дорисовывать границы к A, DIV, INPUT, TD и IMG элементам.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
$oElement.style.BORDER-LEFT-COLOR =  "#0066cc"

не знаю. может и не работает, не проверял
 
Автор
K

kvitaliy

Новичок
Сообщения
10
Репутация
0
axlwor сказал(а):
Код:
$oElement.style.BORDER-LEFT-COLOR =  "#0066cc"

не знаю. может и не работает, не проверял
axlwor, спасибо!
вот так заработало:
Код:
$oElement.style.BORDER =  "1px solid #0066cc"


Осталось понять как в DOM добавлять налету свои элементы.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
kvitaliy [?]
в IE8 почему-то не работает... ссылка не добавилась на страницу
У меня IE7. На восьмёрке не проверял.
[?]
Осталось понять как в DOM добавлять налету свои элементы.
Код:
#include <IE.au3>
$oIE = _IECreate("http://google.ru")
$oElement = _IEGetObjById($oIE, "logo")
_IEPropertySet($oElement, "innerHTML", '<DIV style="FONT-WEIGHT: bold; FONT-SIZE: 16px; LEFT: 208px; COLOR: #666; POSITION: relative; TOP: 78px" noWrap>Привет Россия ;)!</DIV>')
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
kvitaliy [?]
тоже не работает
Не работает - понятие относительное! Что именно? Какие симптомы? Что пишет?
Настройки IE смотрели?
 
Автор
K

kvitaliy

Новичок
Сообщения
10
Репутация
0
симптомы: на странице в браузере ничего не изменяется. скрипт завершается без ошибок.


Проверил только что на работе на 7-ке - работает.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
kvitaliy,
Странно, что у Вас не работает на IE8. У меня оба скрипта Garrett`a (Ответ #3 и Ответ #7) прекрасно отрабатывают (Windows XP SP3 IE8).
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
madmasles
Спасибо, а то я уже думал ставить IE8, хотя желанием, если честно не горю :smile:
 

axlwor

Скриптер
Сообщения
657
Репутация
147
win7 x32 максимальная ие8
Код:
$oElement = _IEGetObjById($oIE, "hplogo")

id элемента hplogo
но все работает
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
[box title=Google in IE7 HTML Source]<div align=left style="background:url(/intl/en_com/images/srpr/logo1w.png) no-repeat;height:110px;width:276px" title="Google" id="logo" onload="window.lol&&lol()">
<div nowrap style="color:#777;font-size:16px;font-weight:bold;left:214px;position:relative;top:70px">Россия</div>
</div>[/box]

[box title=Google in Firefox HTML Source]<div align="left" onload="window.lol&amp;&amp;lol()" id="hplogo" title="Google" style="background: url(&quot;/images/logos/ps_logo2.png&quot;) no-repeat scroll 0% 0% transparent; height: 126px; width: 364px;">
<div style="color: rgb(119, 119, 119); font-size: 16px; font-weight: bold; left: 288px; position: relative; top: 95px;" nowrap="">Россия</div>
</div>[/box]

Google достаточна серьёзная компания, и может иметь под конкретный браузер, отдельный шаблон! ;)
 
Автор
K

kvitaliy

Новичок
Сообщения
10
Репутация
0
попробую еще раз IE8 через несколько часов и настройки его посмотрю...
 
Автор
K

kvitaliy

Новичок
Сообщения
10
Репутация
0
Таки строчка из скрипта не отображается на странице.
Если удастся с этим справиться - напишу сюда результаты.

Всем спасибо!
 

axlwor

Скриптер
Сообщения
657
Репутация
147
тебе же объяснили.
Изменить можно. Нужно только ТОЧНО знать элемент.
для ИЕ я использую debugbar
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Помогите заменить текст в загружаемой странице.
Создаю объект так:
Код:
$oIE2  = _IECreateEmbedded()
_IENavigate ($oIE2, $lnk)

Можно ли в загруженной странице, известному тексту изменить стиль, а именно заключить в тег:
Код:
<b></b>
Если да, то хотелось бы увидеть пример, по пред. не понятно :whistle:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
r35p3ct
Попробуйте так:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

_IEErrorHandlerRegister()

$oIE = _IECreateEmbedded()
GUICreate("Embedded Web control Test", 640, 580, _
		(@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
		$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
$GUI_Button = GUICtrlCreateButton("Click", 10, 420, 100, 30)
$GUI_Button_1 = GUICtrlCreateButton("Click_1", 120, 420, 100, 30)
GUISetState()

_IENavigate($oIE, "http://www.google.ru/")

While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = $GUI_EVENT_CLOSE
			ExitLoop
		Case $msg = $GUI_Button
			$sHTML = _IEBodyReadHTML($oIE)
			$sHTML_1 = StringReplace($sHTML, 'Карты', '<b>Карты</b>')
			;$sHTML_1 = '<b>'& $sHTML & '</b>'
			_IEBodyWriteHTML($oIE, $sHTML_1)
		Case $msg = $GUI_Button_1
			_IEBodyWriteHTML($oIE, $sHTML)
	EndSelect
WEnd

GUIDelete()

Exit
 
Верх