#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: Неправильно. Если страница не находится на вашей стороне (а он подразумевает, что это не так), вам нужен код на стороне сервера.