Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Распознавание ссылок (https://javascript.ru/forum/events/46673-raspoznavanie-ssylok.html)

cript 19.04.2014 00:25

Распознавание ссылок
 
Приветствую!
Например имеется site.ru, на странице этого сайта располагаются ссылка(и) на site2.ru, как выбрать и в дальнейшем использовать все ссылки которые направлены на site2.ru, иными словами нужно опознать ссылку по маске.. ?

cript 19.04.2014 01:35

Пробовал делать через ajax таким способом, но не срабатывает..
$(document).ready(function() {
var link = $("a[href^='http://site2.ru']")
alert(link);
});

Aetae 19.04.2014 01:53

Должно работать, примеры ваших ссылок в стдию.

<a href="http://site2.ru/foo?bar">site2</a>
<a href="http://site2.ru/foo?bar2">site2 2</a>
<script>alert([].join.call(
    document.querySelectorAll("a[href^='http://site2.ru']")
,'\n'))</script>

cript 19.04.2014 02:22

Aetae,
Цитата:

Сообщение от Aetae
Должно работать, примеры ваших ссылок в стдию.

У меня выводит objectObject на любую маску, даже на внутренние ссылки

ваш пример срабатывает, но не с моим кодом, ссылка которую нужно определить загружается после загрузки страницы.. Есть какие нибудь предложения? Может как то через eval ?
Пробовал setTimeout добавлять в функцию, но все ровно не находит..

Сами ссылки создаются таким методом

if (document.getElementById('links')) { 
        document.write('<scr'+'ipt type="text/javascript" async ' 
            +'src="http://site2.ru/test.js"></scr'+'ipt>'); 
    }

Aetae 19.04.2014 02:47

Естественно objectObject, а вы чего хотели? Вы получате ссылки - внутренние объекты браузера, а не текстовые строки, да ещё и обёрнутые в объект jquery.

Получить конкретно массив ссылок можно примерно так:
$(document).ready(function() {
    var links = $("a[href^='http://site2.ru']").map(function(){return this.href}).get(); 
	alert(links);
});

Только учить основы вам всё равно придётся.

cript 19.04.2014 03:11

Aetae,
Благодарю за ответ, может есть какой нибудь способ для варианта из 4 поста?
Я имею ввиду ссылка создается через некоторое время после загрузки страницы, а данный скрипт считывает ссылки которые уже загрузились. То есть если сделать так document.links[номер ссылки].href, то он ее не выведет..

Aetae 19.04.2014 09:09

Ссылки создаются скриптом. Открываете скрипт и смотрите как он это делает.

cript 20.04.2014 01:32

Предположим, что имеется плавающий баннер с рекламой, ссылка постоянно изменяется, как можно определить текущую ссылку?

cript 20.04.2014 21:45

Попробовал сделать так, чтобы скрипт выполнялся после полной загрузки но не получилось..
window.onload=function(){
function getstat(){
$(document).ready(function() {
var links = $("#ADSDIV [href^='http://site2.ru']").map(function(){return this.href}).get(); 
alert(links);
});
}
getstat();
}

Vlasenko Fedor 21.04.2014 20:13

<!DOCTYPE HTML>
<html>
  <head></head>
  <body>
    <a href="http://learn.javascript.ru/play">http://learn.javascript.ru/play</a><br>
    <a href="https://www.google.com">https://www.google.com</a><br>
    <a href="http://ru.lookatcode.com">ru.lookatcode.com</a>
    <script>
      window.onload = function () {
        var youhost = document.location.host.replace(/www\./, '');
        var links = document.links;
        var len = links.length;
        for(var i=0, el; i < len; i+=1){
          el = links[i];
          if(el.href && el.href.indexOf(youhost) === -1){
            alert (el + ' - внешняя ссылка')
          }
        }
      }();
    </script>
  </body>
</html>

скрипт определяет внешние ссылки


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