Что нового

[Сеть, интернет] getAttribute для элементов html страницы с атрибутом onclick не отрабатывается

Mr. Anderson

Новичок
Сообщения
122
Репутация
4
Код:
#include <ie.au3>
#Include <Array.au3>

Local $a[1]
$oIE = _IECreate('www.yandex.ru', 0, 1)
$oElements = _IETagNameGetCollection($oIE, 'a')

For $oElement In $oElements
	If $oElement.href = 'http://news.yandex.ru/' Then
		MsgBox(0, '', $oElement.getAttribute('onclick'))
		_IEDocInsertHTML($oElement, 'МОЙ ТЕКСТ!!!', "afterbegin")
	EndIf
Next


Выводятся пустые MsgBox'ы, хотя в исходном коде страницы есть как минимум один тег:
<a href="http://news.yandex.ru" onclick="return news(this)">все<i></i></а>

Или может быть можно как-то обратиться ко всему <содержимому тега> через элемент $oElement?
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Вот код тестовой страницы test.html:
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Параметр onclick</title>
  <script type="text/javascript">
   function isEmail() {
    var str = document.getElementById("email").value;
    var status = document.getElementById("status");
    var re = /^[^\s()<>@,;:\/][email protected]\w[\w\.-]+\.[a-z]{2,}$/i;
    if (re.test(str)) status.innerHTML = "Адрес правильный";
      else status.innerHTML = "Адрес неверный";
    if(isEmpty(str)) status.innerHTML = "Поле пустое";
   }
   function isEmpty(str){
    return (str == null) || (str.length == 0);
   }
  </script>
 </head> 
 <body>
  <form action="">
   <p>Введите адрес электронной почты и нажмите кнопку &laquo;Проверить&raquo;</p>
   <p><input type="text" id="email"> <span id="status"></span></p>
   <p><input type="button" value="Проверить" onclick="isEmail()"></p>
   <p><a onclick="isEmail()" href="#">Проверить</a></p>
  </form>
 </body>
</html>
Вот код:
Код:
#include <IE.au3>

$oIE = _IECreate(@ScriptDir & "\test.html")
$oElements = _IETagNameGetCollection($oIE, 'a')

For $oElement In $oElements
    If _IEPropertyGet($oElement, "innerText") = "Проверить" Then
        MsgBox(0, "", $oElement.getAttribute("onclick"))
    EndIf
Next


Всё прекрасно работает.
Но, почему порой происходят непонятные дела с сайтами в интернете, нужно разбираться. :scratch:


Mr. Anderson [?]
Или может быть можно как-то обратиться ко всему <содержимому тега> через элемент $oElement?
Код:
_IEPropertyGet($oElement, "outerHTML")
 
Верх