Ромка!eu

  • Отдых
  • Работа
Главная — Блоги — Ромка's blog

Это старая (Drupal 6) версия сайта romka.eu. Она больше не обновляется, комментирование материалов отключено. Обновленная версия сайта доступна по адресу http://romka.eu.

Получение заголовков (HTTP-headers) страницы при помощи Java-script

Ромка — Пнд, 09/15/2008 - 14:48

В журнале Smashing Magazine наткнулся на скрипт (плагин для jQuery), позволяющий автоматически рядом с ссылками указывать размер файла, на который указывает эта ссылка. Оказалось, что этот скрипт в своей работе использует полезный сервис, под названием json-head, который на входе принимает любой URL, а на выходе в формате JSON отдает заголовки, которые получил от сервера.

Анализируя эти заголовки можно на стороне клиента придумать много полезных фишек, кроме указания размера документа, на который ведет ссылка, можно, например, подсвечивать ссылки на недавно обновленные страницы (заголовок "Last-Modified") или нерабочие ссылки (анализ переменной "status_code").

Все те же действия можно проделывать и не используя сторонние сервисы, но в таком случае опрос удаленных серверов и анализ заголовков придется реализовать на стороне своего сервера, со всеми вытекающими отсюда достоинствами (независимость от сторонних сервисов и того, включена на стороне клиента поддержка Java-script или нет) и недостатками (в случае большого количества запросов забанят ip вашего сервера, а не ip сервера http://json-head.appspot.com ну и необходимость разработки собственного решения).

Кстати, с помощью этого сервиса, совершенно случайно выяснил, что Гугл работает с использованием веб-сервера собственной разработки — gws, по данным из Википедии на этом ПО работает 9,3% всех сайтов в интернете, то есть Гугл — это и есть почти 10% интернета!

Пример использования

Пример приведу на основе скрипта, указывающего размер документа, на который ведет ссылка. Работать со скриптом просто, его надо скачать и подключить к своей странице:

<?php
<script src="jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="addSizes.js" type="text/javascript" charset="utf-8"></script>
?>

После чего все ссылки на файлы с расширениями *.mp3, *.pdf, *.doc будут дополнены информацией о размерах файлов.

Внимание! Важно учитывать то, что информация о размере файла берется из HTTP-заголовка "Content-Length", некоторые веб-сервера могут его не отдавать и для ссылок на файлы с таких серверов размер указан не будет.

Скрипт addSizes.js можно легко модифицировать под свои цели, например можно добавить показ размера для всех внешних ссылок, для этого строчку:

<?php
$('a[href$=".pdf"], 'a[href$=".doc"], a[href$=".mp3"], a[href$=".m4u"]).each(function(){
?>

нужно доработать таким образом:
<?php
$('a[href$=".pdf"], 'a[href$=".doc"], a[href$=".mp3"], a[href$=".m4u"], a[target$=_blank]').each(function(){
?>

Кроме того, я рекомендую заменить строчку:
<?php
link
.after(' (' + type + ' ' + length + ' ' + lengthUnits + ')');
?>
на:
<?php
link
.after(' <span class="filesize">(' + type + ' ' + length + ' ' + lengthUnits + ')</span>');
?>

для того, чтобы с помощью CSS можно было бы управлять внешним видом блока с информацией.

Работающий пример находится здесь: http://romka.eu/examples/autosize/index.html, в нем я, кроме вывода информации о размере документа, добавил вывод даты его последнего изменения, в случае если нет заголовка "Content-Length".

P.S. Хотите быстрее всех получать информацию об обновлениях на этом сайте? Тогда подпишитесь на RSS-канал ;)

  • java-script
  • jquery
  • Штуки-дрюки
  • Ромка's blog

Как проверить с jQuery загрузил ли браузер все картинки

Anonymous → Пнд, 10/13/2008 - 17:01

Здравствуйте подскажите пожалуйста как мне определить, загружены ли все картинки браузером, надо на javascript? жедательно на jQuery.
У меня не известно не количество картинок, не их имена. Многие советуют использовать событие onload на картинке, но мне это не подходит, мне просто нужно проверить все ли браузер загрузил или еще нет. Вот как это реадизовать не знаю, подсказали с помощью заголовков, но я с ними не работала. Подскажите как быть.

Для jQuery есть плагин onImagesLoad

Ромка → Втр, 10/14/2008 - 01:45

Для jQuery есть плагин onImagesLoad, который умеет вызывать какую-нибудь функцию после загрузки изображений. Пример из документации к плагину:

<?php
<script type="text/javascript" src="jquery.onImagesLoad.js"></script>

<script type="text/javascript">
$(function(){
   // После загрузки всех изображений из контейнера с id=imageSectionOne вызываем функцию allImagesLoaded
   $('#imageSectionOne').onImagesLoad({
      callback: allImagesLoaded
   });
   // После загрузки всех изображений из контейнера с id=imageSectionTwo вызываем функцию allImagesLoaded
   $('#imageSectionTwo').onImagesLoad({
      callback: allImagesLoaded
   });

    //handle onImagesLoad events
   function allImagesLoaded(container){
      $(container).prepend('<div class="doneLoading">(All images have loaded in node="'+container.nodeName+'", ID="'+container.id+'")</div>');
   }
});
</script>
?>

Если зменить, например

<?php
   
$('#imageSectionTwo').onImagesLoad({
      
callback: allImagesLoaded
   
});
?>

на
<?php
   
$('body').onImagesLoad({
      
callback: allImagesLoaded
   
});
?>

, то функция будет вызвана после загрузки всех изображений.

Кроме того есть еще плагин elementReady, имеющий похожий функционал, но он привязывается не к контейнеру (слою, параграфу и т.п.), а к конкретному объекту (картинке).

Помогите пожалуйста

Денис (не проверено) → Ср, 01/06/2010 - 18:56

Я полазил в инете и понял что вроде как я не могу написать свою страничку со скриптами, которая состояла бы из одной формы где бы я ввел URL сайта например http://ya.ru, скрипты бы сделали запрос и вернули html код этого сайта.
Такж е понял что вроде так нельзя сделать и средствами Ajax.
А мне позарез надо с этим разобраться. Вообще мне нужно что-то типа валидатора битых ссылок.
Я хотел получить код, вставить его себе в страницу(скрытый фрейм) и найти теги и делать запросы на ссылки тем же методом что и запрос основного сайта, URL которого указан в форме.
Подскажите что делать?

индия курсовые по физике

Anonymous (не проверено) → Ср, 02/17/2010 - 00:37

индия курсовые по физике рефераты по физике дипломные по географии курсовые по географии обои к шоу обои для рабочего стола в мире сказок сказки тюннинг автомобилей тюннинг искусство массажа українські дипломні роботи українські реферати китай компьютерные сети сложные сети seropol5

tv series wallpapers tv show

Anonymous (не проверено) → Ср, 04/14/2010 - 13:57

tv series wallpapers tv show wallpapers tv subs tv shows subs дипломные работы сочинения seropol5

география путешествия tv

Anonymous (не проверено) → Ср, 04/14/2010 - 14:00

география путешествия tv series wallpapers tv wallpapers subtitles tv subs movies subtitles субтитры к сериалам субтитры к сериалам subtitles tv show and tv series subtitles дипломные работы рефераты субтитры к фильмам seropol5

Построени дерева с помощью jQuery.treeview

Василий (не проверено) → Чт, 05/20/2010 - 17:37

Здравствуйте Роман!
Предлагаю Вам рассказать про то как работать с плагином jquery.treeview.js, а именно как асинхронно достраивать "детей" веток.
Пролазил весь интернет и никак не могу разобраться.

С уважением, Василий

Через JavaScript нельзя

Максим (не проверено) → Сб, 05/22/2010 - 18:21

Через JavaScript нельзя смотреть заголовки ответа сервера. Так как JS срабатывает уже когда страница загружена :)
А я заголовки ответа сервера смотрю всегда через сервис http://h.zeos.in/ ну или есть куча подобных. Этот мне понравился, что тут нет никакой рекламы и всё работает быстро и красиво и удобно сделано.

чтение строки из файла

Anonymous (не проверено) → Втр, 09/21/2010 - 11:47

Добрый день!

Помогите решить такую задачу.
В текстовом файле записана одна строка.
Как сделать так, чтобы при запуске браузером html-страницы открывался текстовый файл и строка считывалась?
В результате, пользователь, запустивший страницу, должен увидеть текст.

Спасибо заранее.

Нельзя!

Anonymous (не проверено) → Ср, 10/20/2010 - 20:46

Нельзя!

можно )

Anonymous (не проверено) → Чт, 03/10/2011 - 00:56

можно )

Обо мне

Всем привет!
Меня зовут
Роман Архаров, я профессиональный веб-разработчик, программирую на языках PHP, Python и Action-Script, в работе использую фреймворки Drupal и Django. В этом блоге я размещаю заметки и статьи, связанные с моей работой, отдыхом и другими интересными мне темами.

Похожие заметки

  • Перетаскивание строк таблицы. Table drag and drop — плагин для jQuery
  • Автоматическая "газетная" верстка (верстка в несколько колонок)
  • Вращение изображений при помощи Javascript
  • Tagnetic — холодильник тэгов
  • Баг jQuery в Firefox 3 и WebKit

Популярные заметки

  • Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте
  • Перетаскивание строк таблицы. Table drag and drop — плагин для jQuery
  • Темизация Drupal. Часть 3. Основы Drupal Forms API и темизация форм
  • Темизация Drupal. Часть 4. Темизация Views
  • AJAX. Обмен данными между клиентом и сервером, закачка на сервер файлов без перезагрузки страницы при помощи библиотеки jQuery.
  • Кеширование на Drupal-сайте. Сравнение встроенного в Drupal кеша, статического файлового кеша (модуль Boost) и Varnish
  • Тестирование модуля "Inner poll"
  • Несколько панорам из путешествия по Перу и Боливии
  • Arduino + bluetooth, небольшая проблема
  • Пример разработки плагина для модуля CCK

Подписка


Последние комментарии

  • drupal-admin → Кеширование на Drupal-сайте. Сравнение эффективности встроенного в Drupal кеша, статического файлового кеша (модуль Boost) и Var → Отличная статья
  • Меховщиков Руслана → Проверка имени пользователя на наличие букв из разных алфавитов → Re: Читал про это уже на
  • Вероника → Куба. Лето 2008. Часть 3 → По поводу "приветливых жителей" Тринидада
  • Sfero → Статья в PC Magazine/RE. Drupal: разработка модуля → Немного о контенте
  • RemaGe → Статья в PC Magazine/RE. Drupal: разработка модуля → -)
  • Ромка → Статья в PC Magazine/RE. Drupal: разработка модуля → Да, будет сборка, та которую
  • RemaGe → Статья в PC Magazine/RE. Drupal: разработка модуля → -)
  • anatinge → Поездка в Киев → спасибо :)
  • Ромка → Поездка в Киев → Да, в общем-то, ничего
  • GogA → Поездка в Киев → Заинтриговал, что там за

Новые заметки

  • Кеширование на Drupal-сайте. Сравнение встроенного в Drupal кеша, статического файлового кеша (модуль Boost) и Varnish
  • Любопытное поведение модуля syslog в шестом Друпале (баг?)
  • Arduino + bluetooth, небольшая проблема
  • Гугл 1 марта прекратил поддержку сервиса Google Friend Connect
  • Проба пера в HTML5 + canvas. Эффект ластика
  • Шесть рукопожатий
  • Доклад на DrupalConfMoscow 2011
  • Статусы разных сущностей в Друпале 6
  • Футер, прибитый к низу страницы
  • Путешествие по Перу и Боливии. Часть 2

Тэги

Drupal jquery Куба Лето 2007 Лето 2008 Отдых Работа Штуки-дрюки лето модуль статья цитата
еще тэги

Навигация

  • Exchange rate
  • Переход по внешней ссылке
  • Последние сообщения
  • Фотогалереи

Курсы валют

  • 100 Казахстанских тенге — 21,3687 (-0.43)
  • 10 Украинских гривен — 27,2852 (-13.04)
  • 1 Китайский юань — 10,2706 (-40.98)
  • 100 Японских иен — 53,5332 (+12.67)
  • 1 Доллар США — 65,6210 (+33)
  • 1 Евро — 69,8076 (+29.42)
  • 10000 Белорусских рублей — 36,3310 (-2.51)
  • 1 Турецкая лира — 22,9540 (+4.99)

10 случайных заметок

  • Второе имя, middle name
  • Темизация Drupal. Часть 4. Темизация Views
  • Гугл 1 марта прекратил поддержку сервиса Google Friend Connect
  • Рассуждение на тему «Сколько стоит сайт?»
  • Баг jQuery в Firefox 3 и WebKit
  • Песня для хорошего настроения
  • Еще одна очень меткая картинка
  • Cinnamon Chasers - Luv Deluxe (Music Video)
  • Вращение изображений при помощи Javascript
  • Google Developer Day 2009

Случайные фото

Экзотическое меню в аэропорту :))
Судак, Генуэзская крепость
В Сингапурском зоопарке. Попугай
Оригинальная дорожная разметка в Гаване
Копенгаген, Кристиания, Граффити 3
Типичная местная женщина
Взгляд в будущее
Арка
Фонтаны в Осло работают даже зимой. Карл Юхан Гате
Вид на Осло из замка Акерхус
Я и разноцветные рыбы
Дорога, на поверхности видны следы копыт
Замок Акерхус вечером
Пеликан
Без имени
В аэропорту
  • Отдых
  • Работа

При использовании материалов с сайта, пожалуйста, ставьте ссылку на источник. E-mail для связи: mne@romka.eu.