|
|
|
| С помощью XMLHttpRequest произвожу фоновую загрузку html страницы некого сайта с подошью следящего кода пытаюсь извлечь к примеру количество ссылок на скачиваемой страницы
if (req.readyState ==4)
{
if (req.status == 200)
{
var element=req.responseXML.documentElement;
var linc =element.getElementsByTagName('a');
var count = linc.length;
alert(count);
}
else {
alert("Не удалось получить данные);
}
}
|
но при выполнении скрипта получаю сообщение что переменная «linc» равна null, хотя если просмотреть данные при помощи alert(req.responseText) то ссылки в скачиваемом документе есть. Где бок ?? | |
|
|
|
|
|
|
|
для: Prihod
(23.04.2007 в 21:44)
| | Пробуй несколько вариантов:
замени тэг на большую букву - getElementsByTagName("A");
И по моему documentElement это корневой DOM объект XML, а не Document HTML.
Пробуй так:
var element=req.responseBody; | |
|
|
|
|
|
|
|
для: XPraptor
(24.04.2007 в 02:03)
| | По-моему вот здесь:
var element=req.responseXML.documentElement;
не нужно использовать documentElement;
Нужно так:
var element=req.responseXML; | |
|
|
|
|
|
|
|
для: XPraptor
(24.04.2007 в 02:03)
| | При использовании var element=req.responseBody; ничего не изменилось, а при
var element=req.responseXML
var a=element.getElementsByTagName('A');
var count =a.length;
alert(count);
значение count равно 0 хотя там куча ссылок | |
|
|
|
|
|
|
|
для: Prihod
(24.04.2007 в 12:32)
| | А регистр тегов в ответе сервера (А и а) совпадает с регистром в строке
var a=element.getElementsByTagName('A');
?
И еще: насколько я знаю, аякс запрещает работу с файлами с чужих хостов. | |
|
|
|
|
|
|
|
для: coloboc66
(24.04.2007 в 13:56)
| | Тебе придется создать в скрипте виртуальный объект Document. Так как ты сейчас не можешь получить ссылку на объект Document, а без этого нельзя использовать DOM модель getElementsByTagName.
var newdoc=createelement("DOCUMENT");
newdoc.body.innerHtml=responseXML; //или responseBody
а вот теперь можно newdoc использовать как объект Document. Единственное, не смотрел точно синтаксис createElement, глянь сам в DHTML и создай объект. | |
|
|
|
|
|
|
|
для: XPraptor
(24.04.2007 в 16:38)
| | Если получится, дайте знать, мне тоже интересно. | |
|
|
|
|
|
|
|
для: Prihod
(23.04.2007 в 21:44)
| | Можно как-нибудь так:
IE only
<html>
<head>
<script>
onload = function()
{
var url = "http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=36420&page=1"
var req = new ActiveXObject('Microsoft.XMLHTTP');
req.open('GET', url, false);
req.send(null);
var d = frames[0].document;
d.write(req.responseText);
alert("кол-во ссылок: "+d.links.length);
var a = [];
for(var i=0;i<d.links.length;i++)a.push(d.links[i].href);
document.getElementById('myDiv').innerHTML=a.join('<br>');
}
</script>
</head>
<body>
<iframe src="about:blank" height="0"></iframe>
<div id="myDiv"></div>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: RMW
(24.04.2007 в 20:04)
| | Пример RMW работает , а XPraptor нет , т.к функцией createElement и createelement не получается создать виртуальный объект Document, хотя вариант с виртуальный объект Document мне больше нравиться, может кто знает как его можно создать ? И где модно найти хороший справочник или книгу по DHTML в электронном виде и на русском | |
|
|
|
|
|
|
|
для: Prihod
(25.04.2007 в 19:46)
| | В общем-то, вопрос сводится к простому: как получить доступ к XML-док-ту, закружаемому в броузер, с помощью responseXML, с тем, чтобы далее разбирать этот документ ява-скриптом? Кто-нибудь может ответить конкретно? | |
|
|
|
|
|
|
|
для: coloboc66
(28.04.2007 в 11:54)
| | Ответить может тот, кто знает, что HTML!=XML. | |
|
|
|
|
|
|
|
для: coloboc66
(28.04.2007 в 11:54)
| | Для оперы - просто работать, как с XML объектом, для ие:
var obj = new ActiveXObject ('Microsoft.XMLDOM');
obj.async = false;
obj.loadXML (xml);
|
где xml - это xml-объект | |
|
|
|