Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Открыть все ссылки (https://javascript.ru/forum/css-html-firefox-mizilla/17775-otkryt-vse-ssylki.html)

compasses 02.06.2011 11:29

Открыть все ссылки
 
Здравствуйте!

На странице присутствует около 600 ссылок. Выглядит это так:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<body>

<a href="http://01e.ru" target="_blank">http://01e.ru</a><br />
<a href="http://1.auto-marksa30.ru" target="_blank">http://1.auto-marksa30.ru</a><br />
<a href="http://1naraione.ru" target="_blank">http://1naraione.ru</a><br />
<a href="http://1pks.ru" target="_blank">http://1pks.ru</a><br />
<a href="http://1ry.ru" target="_blank">http://1ry.ru</a><br />
<a href="http://1tehnion.ru" target="_blank">http://1tehnion.ru</a><br />
...


Как мне сделать, чтобы javascript собрал все ссылки и перешел по ним?
Я пытаюсь сделать так:
{

    var i,l = document.links;
    for(i = 0 ; i < l.lenght ; i++){
        l[i].onClick
    }
}


На что выдается ошибка:
[error] Unexpected Exception: message -> l is undefined
Причем ругается на for(i = 0 ; i < l.lenght ; i++)
Что ему надо?
З.Ы. Эту функцию я интегрирую в selenium, но так как он полностью на javascript, то думаю не в этом дело. Подскажите пожалуйста кто знает?

compasses 02.06.2011 11:40

Или я вообще не правильно пишу и такой код не откроет все ссылки на сайте?

compasses 03.06.2011 14:43

Разобрался. Сделал. Если кому надо будет:
Selenium.prototype.doAllLinks = function( locate ) {

    wnd=open(locate, "displayWindow", "width=500,height=400,status=yes,toolbar=yes,menubar=yes");
    alert("Find all links and click them");
    for (var i = 0; i < wnd.document.links.length; i++) {
          getTopWin().getBrowser().addTab(wnd.document.links[i]);  
	}
}

function getTopWin ()
{
    var windowManager = Components. classes ['@mozilla.org/appshell/window-mediator;1']. getService();
    var windowManagerInterface = windowManager.
                                 QueryInterface (Components. interfaces. nsIWindowMediator);
    var topWindowOfType = windowManagerInterface. getMostRecentWindow ("navigator:browser");
    
    if (topWindowOfType)
    {
        return topWindowOfType;
    }
    return null;
}


Вопрос возник:
wnd=open(locate, "displayWindow", "width=500,height=400,status=yes,toolbar=yes,menubar=yes");
    alert("Find all links and click them");
    for (var i = 0; i < wnd.document.links.length; i++) {

Если убрать строку
alert("Find all links and click them");

То страница не успевает загрузиться и wnd.document.links.length = 0;
Есть ли более красивый способ подождать? Читал про setTimeout и setInterval - они не подходят, так как все это управляется под selenium, а селениум некоторые js функции не всегда адекватно воспринимает.


Часовой пояс GMT +3, время: 03:16.