Как открыть случайную ссылку в том же окне
Help!
Использую для автоматизации расширение "Chromium browser automation". В нем можно использовать код Javascript. Например: на странице много ссылок, надо открыть в том же окне любую случайную ссылку, которая еще не открывалась. Как это сделать с помощью Javascript? Спасибо. |
Любую - легко. Которая не открывалась - совсем другое дело.
Проблема в том что обычный javascript в целях безопасности никаким образом не может узнать по каким ссылкам ходили, а по каким - нет. Потому решение тут зависит от того, даёт ли данное расширение доступ к потрохам браузера, ибо если нет - придётся писать своё, либо же вручную с самого начала отслеживать всю активность на сайте и запоминать в отдельное хранилище переходы. |
Есть же параметр history, с ним нельзя? А насчет потрохов, не знаю.
Хорошо, тогда открыть одну случайную ссылку с тегом <li>. |
Ссылки, они с тегом <a>. Что подразумевается тут: ссылка внутри тега <li>, ссылка содержащая внутри себя тег <li>, <li> который при клике javascript'ом открывает окно?
|
Ссылка обернутая тегом <li><a href="..."></a></li>
|
function followRandomLink(){ var links = document.querySelectorAll('li a'); links[Math.floor(Math.random()*links.length)].click(); } |
Что-то не открывает.
Может посмотрите ссылку на туториал http://chrome-automation.com/inject-cs Там есть разные действия. |
Функцию то вы запусткаете?
|
<html> <body> <ul> <li><a href = "http://google.ru">google</a></li> <li><a href = "http://ya.ru">ya</a></li> <li><a href = "http://javascript.ru">javascript</a></li> </ul> <button onclick = "location = document.links[Math.floor(Math.random() * document.links.length)]"> follow random link </button> </body> </html> |
Цитата:
Я вставил код в cs-Inject, не работает. Есть еще действие click, а что там прописать, не знаю. |
Вставляйте так:
var links = document.querySelectorAll('li a'); links[Math.floor(Math.random()*links.length)].click(); Но вообще это не дело, если хотите что-то себе автоматизировать - придётся хотябы базово изучить тот или иной скриптовой язык. |
Работает. Страница открылась, на ней тоже нужно открыть случайную ссылку с <li>. Дублировал это же действие. Не открывает. Почему?
PS Да, надо изучать javascript. |
Цитата:
Разобрался. Все работает.:dance: |
Цитата:
Если на странице вообще нет ссылок, как сделать переход, например на http://yandex.ru |
var links = document.querySelectorAll('li a'); if(links.length == 0) { location = 'http://yandex.ru'; } else { links[Math.floor(Math.random()*links.length)].click(); } |
Цитата:
Пробовал также через if и else, только напутал с переменной. Спасибо.:yes: |
Цитата:
Стоит ли пройти курс javascript Ильи Кантора или самому изучить по учебнику? |
var links = [ 'http://сайт.ru/Directory/', 'http://сайт.ru/Directory2/', 'http://сайт.ru/Directory3/', ]; location = links[Math.floor(Math.random()*links.length)];По поводу курсов - сами смотрите. Каждому свой тип обучения ближе. По мне - тут отличный учебник. |
Цитата:
Так не открывается. В директории http://сайт.ru/Directory/ нужно открыть любую страницу с неизвестным именем. Имена такого вида http://сайт.ru/Directory/vbvt или 12657vbvt. |
|
Там нет тега <base>.
При открытии страницы http://сайт.ru/Directory/ на ней нет ссылок, как таковых. А фактически они есть и имеют такой вид http://сайт.ru/Directory/name. Name может быть из букв, из цифр, и вместе. А общий список ссылок на сайте скрыт. Что можете предложить? |
vbvt,
Тег <base> можно вставить самому или как HTML или скриптом <!DOCTYPE> <html> <head> <body> <script type="text/javascript"> document.write('<base href="http://javascript.ru/forum/events/">') alert('Перейти на страницу - ? \n\n"65716-kak-otkryt-sluchajjnuyu-ssylku-v-tom-zhe-okne-3.html#post435027"'); location.href = '65716-kak-otkryt-sluchajjnuyu-ssylku-v-tom-zhe-okne-3.html#post435027'; </script> </body> </html> |
Спасибо, с <base> что-то не получается.
|
Цитата:
var siteURL = "http://" + top.location.host.toString(); var $internalLinks = $("a[href^='"+siteURL+"'], a[href^='/'], a[href^='./'], a[href^='../'], a[href^='#']"); ищет все внутренние ссылки, как их вывести куда-нибудь? |
$(document.body).append( $internalLinks .map(function(a){ return a.href }) .join('<br>') ) |
Цитата:
|
vbvt,
Может так? var siteURL = "http://" + top.location.host.toString(); var $internalLinks = $("a[href^='"+siteURL+"'], a[href^='/'], a[href^='./'], a[href^='../'], a[href^='#']"); $(document.body).append( $internalLinks .map(function(){ return this.href }) .join('<br>') ) |
$(document.body).append( [].join.call( $internalLinks.map( function(){ return this.href }), '<br>' ) )Ох уж этот jq. |
Цитата:
|
Цитата:
Можно ли сделать так чтобы поиск был по серверу, а не по странице? |
Цитата:
Смотрите, вот адрес документа .../2014/11/19/1 Как открывать по очереди или случайно ссылки с id 'start' от 1 до конечного значения? Это адрес ссылки расположения документа .../?day=19&month=11&year=2014&topic=all&start=1 |
Сам разобрался. Благодарю всех участников.
|
Часовой пояс GMT +3, время: 08:14. |