Получение названия веб-сайтов

#javascript #jquery #url #attributes #title

#javascript #jquery #url #атрибуты #Название

Вопрос:

Я пытаюсь получить заголовок URL-адреса для ссылки.

Например, получить заголовок этого:

<a class="stack" href="http://stackoverflow.com" title="Stack Overflow">

будет сгенерирован динамически из чего-то вроде этого: $('.stack').attr("title", "...."); .

Возможно ли это с помощью javascript или jQuery получить заголовок URL-адреса?

Большое спасибо

Комментарии:

1. Итак, вы хотите получить заголовок выбранного вами URL-адреса или атрибут title этого элемента?

2. @ItayMoav Я знаю, извините, что пытаюсь улучшить.

3. @drake Я пытаюсь получить заголовок ссылки.

Ответ №1:

Создание заняло немного времени, но этот пример позволяет загружать веб-страницу с вашей веб-страницы. Затем извлеките заголовок из тегов title.

 <html>
<head>
<!-- jQuery include -->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<!-- This include allows cross domain get requests -->
<script type="text/javascript" src="https://raw.github.com/jamespadolsey/jQuery-Plugins/master/cross-domain-ajax/jquery.xdomainajax.js"></script>

<!-- Sample -->
<script type="text/javascript">
$(document).ready(function(){
    //gets the href of the first anchor
    var url = $("a").first().attr("href");

    //sets a get request to get the html source
    $.get(url, function(data){
        //uses get string between function to get the text between the title tags
        //then calls it in a message box
        alert(getStringBetween(data.responseText, "<title>", "</title>"));
    }); 
});

function getStringBetween(input, start, end){
    var index = input.indexOf(start);

    if(index != -1){
        index  = start.length;
        var endIndex = input.indexOf(end, index   1);

        if(endIndex != -1)
            return input.substr(index, endIndex - index);
    }
    return false;
}
</script>

</head>
<body>
    <a href="http://www.google.com/">Google</a>
</body>
</html>
  

Комментарии:

1. Это будет работать только в пределах вашего домена. Кроме того, вы должны проанализировать HTML с помощью jQuery вместо сопоставления строк. (А как насчет <tiTle> ?)

2. @SLaks как насчет того, чтобы вы попробовали код, который я только что привел, прежде чем утверждать, что он не работает.

3. Вы используете прокси-сервер на стороне сервера; я этого не заметил.

Ответ №2:

Да, просто используй document.title . Простой и эффективный.

 $('.stack').attr("title", document.title);
  

РЕДАКТИРОВАТЬ: Похоже, я неправильно понял ваш вопрос. Если вы хотите получить заголовок другой страницы, а не загруженной в данный момент, вы могли бы использовать некоторые междоменные хитрости AJAX, но обычно это не очень хорошая идея. Я бы просто взял заголовок страницы на стороне сервера (в том, что вы используете для генерации страницы [php, asp и т.д.]) И вывел его.

Комментарии:

1. Это устанавливает заголовок ссылки на заголовок текущей страницы ( document.title ). Не думаю, что это то, чего хочет OP.

Ответ №3:

По соображениям безопасности вы не можете прочитать содержимое с другого веб-сайта, используя Javascript, даже просто для того, чтобы прочитать заголовок.

Вы могли бы написать прокси-сервер на стороне сервера, который запрашивает удаленную страницу и находит ее <title> тег с помощью синтаксического анализатора HTML.

Однако вам не следует делать это на стороне клиента; это приведет к пустой трате времени и ресурсов.
Если вы действительно хотите это сделать, сделайте это один раз на сервере в качестве этапа предварительной обработки при создании новой страницы.

Комментарии:

1. Хорошо, теперь я понял это. В основном я ищу что-то вроде того, что используют известные сайты закладок. Например delicious.com выдает заголовок этой страницы… Имеет ли это смысл?

2. Они делают это заранее на сервере.

3. По вашей правке: это небольшой сайт с закладками. Я не могу придумать другого способа сделать это. Я имею в виду, что клиент добавляет веб-сайт, вам нужно дать ему заголовок…

4. Вы имеете в виду использование прокси на стороне сервера?

5. ДА. Если вам нужно отобразить заголовок, добавляемый пользователем перед перезагрузкой, вам нужно будет использовать AJAX с прокси. В противном случае вам следует искать заголовок при добавлении закладки и сохранять его в базе данных.

Ответ №4:

Если href URL-адреса не находится в домене текущего документа, использование JavaScript для попытки получить заголовок целевого документа потребует междоменных сценариев, которые обычно не разрешены (с использованием традиционных методов) браузерами. Если вы не очень разбираетесь в прокси (не совсем уверены, как это делается), вам понадобится язык на стороне сервера, чтобы сначала загрузить документ.

Комментарии:

1. Или, в основном, то, что сказал СЛакс! Извините, не увидел вашего ответа!

2. При использовании правильного плагина сценарии на стороне сервера не требуются

3. @Drake: Неправильно. Если страница не находится на вашей стороне (а он подразумевает, что это не так), вам нужен код на стороне сервера.