Что такое подписка через RSS: полное руководство

Автоматическое обновление ленты новостей на вашем устройстве прекращается, если вы не настроите подписку через RSS на сайтах, которые не имеют собственного мобильного приложения или-уведомлений. Эта технология представляет собой стандартный протокол Really Simple Syndication, который позволяет агрегаторам забирать свежий контент с серверов изданий без необходимости постоянно заходить на сайт вручную. Если вы видите желтый значок с радиоволнами или надпись RSS в адресной строке браузера, это сигнал о том, что ресурс готов передавать вам данные в машиночитаемом формате. Отсутствие такой настройки приводит к тому, что вы пропускаете важные обновления, так как полагаетесь на нерегулярные визиты или алгоритмические ленты социальных сетей.

Суть процесса заключается в том, что пользователь указывает своему RSS-ридеру (агрегатору) адрес специальной XML-ссылки, после чего программа сама опрашивает сервер источника на предмет изменений. В отличие от email-рассылок, здесь не происходит пересылки полного текста письма через почтовые серверы, что экономит трафик и ускоряет доставку контента. Критическим преимуществом является полная независимость от алгоритмов ранжирования: вы видите все публикации в хронологическом порядке, а не только те, которые платформа сочла «интересными». Это делает технологию незаменимой для мониторинга технических блогов, новостных порталов и форумов, где важна оперативность и полнота информации.

Для начала работы вам не нужны сложные технические навыки, достаточно найти URL-адрес канала и вставить его в соответствующее поле программы. Современные браузеры и расширения часто предлагают добавить ленту в закладки или сразу отправить её в ваш аккаунт Feedly или Inoreader. Однако стоит учитывать, что некоторые сайты ограничивают отдачу контента, показывая в ленте только заголовки или краткие анонсы для привлечения трафика на основную страницу. Понимание того, как работает подписка через RSS, позволяет грамотно фильтровать информационный шум и создавать персонализированный поток данных, свободный от рекламы и сторонних рекомендаций.

Технические основы протокола Really Simple Syndication

В основе технологии лежит язык разметки XML (Extensible Markup Language), который структурирует данные таким образом, чтобы их могли легко интерпретировать различные программы. Файл подписки содержит метаданные о канале (название, описание, ссылка на сайт) и список элементов, каждый из которых соответствует отдельной публикации. Внутри элемента хранятся заголовок новости, дата выхода, автор, категория и, собственно, тело статьи или её сокращенная версия. Спецификация RSS 2.0 является наиболее распространенной на сегодняшний день, хотя существуют и более старые версии, а также конкурирующий стандарт Atom, который часто используется в блогах.

⚠️ Внимание: Не все RSS-ленты обновляются в реальном времени. Некоторые издатели настраивают серверы с задержкой (кэшированием) от 15 минут до нескольких часов, чтобы снизить нагрузку на хостинг при резких всплесках трафика.

Когда ваш агрегатор отправляет запрос на сервер источника, он сравнивает уникальные идентификаторы записей (GUID) с теми, что уже есть в вашей базе. Если обнаруживается новый GUID, программа загружает контент и помечает его как непрочитанный. Этот механизм гарантирует, что вы не получите дубликатов одной и той же новости, даже если заголовок был отредактирован постфактум. Важно понимать разницу между полным и частичным фидом: в первом случае вы читаете всё внутри ридера, во втором — кликаете по ссылке для перехода на сайт, что критично для владельцев ресурсов, зарабатывающих на показах баннеров.

Структура запроса и ответа строго регламентирована, что обеспечивает совместимость между тысячами различных сервисов. Даже если вы смените устройство или программу для чтения, достаточно экспортировать список URL-адресов (обычно в формате OPML) и импортировать его в новое место, сохранив всю свою медиа-экосистему. Это дает пользователю полный контроль над тем, откуда он получает информацию, в отличие от закрытых экосистем социальных сетей, где экспорт данных часто затруднен или невозможен.

Технические детали формата XML

Структура RSS-файла начинается с тега , внутри которого находится единственный элемент . Именно в прописываются метаданные сайта и список всех новостей через теги . Каждый обязан содержать , <link> и <description>, остальные поля опциональны.</p></div></details> <h2 id="популярные-агрегаторы-и-программы-для-чтения-лент">Популярные агрегаторы и программы для чтения лент</h2> <p>Выбор инструмента для управления подписками зависит от ваших целей: нужен ли вам кроссплатформенный доступ, оффлайн-чтение или глубокая аналитика источников. Рынок предлагает как облачные сервисы, синхронизирующие состояние прочтения между телефоном и компьютером, так и локальные приложения, хранящие данные только на устройстве. Лидерами в этой нише долгое время оставались сервисы вроде <strong>Feedly</strong> и <em>Inoreader</em>, которые предоставляют удобный веб-интерфейс и мобильные приложения с поддержкой тегов и папок.</p> <ul> <li>📱 <strong>Feedly</strong> — самый популярный облачный агрегатор с интеграцией в Slack, Evernote и Pocket, идеально подходит для командной работы.</li> <li>💻 <strong>The Old Reader</strong> — минималистичный сервис, напоминающий интерфейс старого Google Reader, ориентированный на скорость и простоту.</li> <li>🦊 <strong>Brief</strong> — расширение для браузера Firefox, позволяющее читать ленты прямо в боковой панели без перехода на сторонние сайты.</li> <li>📂 <strong>NetNewsWire</strong> — нативное приложение для macOS и iOS, отличающееся высокой скоростью работы и отсутствием навязчивой рекламы.</li> </ul> <p>Локальные клиенты, такие как <em>RSS Owl</em> или <strong>QuiteRSS</strong>, имеют преимущество в виде полного отсутствия зависимости от серверов третьих лиц. Вы сами решаете, как часто программа будет опрашивать сайты, и можете настроить правила автоматической сортировки новостей с использованием регулярных выражений. Это особенно полезно для системных администраторов и разработчиков, которым нужно мониторить логи ошибок или обновления документации в специфическом формате.</p> <p>Мобильные приложения часто предлагают дополнительные функции, такие как «Режим чтения», который очищает статью от рекламы и лишней верстки перед показом. Некоторые продвинутые ридеры поддерживают подкасты, позволяя подписываться на аудио-каналы через тот же RSS-протокол и скачивать выпуски для прослушивания в метро. Интеграция с сервисами отложенного чтения (<code>Read It Later</code>, <em>Pocket</em>) позволяет сохранить интересную статью в один клик, чтобы изучить её детально в свободное время, не захламляя основную ленту.</p> <div class="pb-poll" id="poll-a7c0c379"><div class="pb-poll-question">📊 Какой тип агрегатора вы предпочитаете?</div><div class="pb-poll-option" data-poll="a7c0c379" data-idx="0" onclick="pbPollVote(this)"><span class="pb-poll-label">Облачный сервис (Feedly, Inoreader)</span><span class="pb-poll-bar"></span><span class="pb-poll-pct"></span></div><div class="pb-poll-option" data-poll="a7c0c379" data-idx="1" onclick="pbPollVote(this)"><span class="pb-poll-label">Локальная программа на ПК</span><span class="pb-poll-bar"></span><span class="pb-poll-pct"></span></div><div class="pb-poll-option" data-poll="a7c0c379" data-idx="2" onclick="pbPollVote(this)"><span class="pb-poll-label">Расширение для браузера</span><span class="pb-poll-bar"></span><span class="pb-poll-pct"></span></div><div class="pb-poll-option" data-poll="a7c0c379" data-idx="3" onclick="pbPollVote(this)"><span class="pb-poll-label">Мобильное приложение</span><span class="pb-poll-bar"></span><span class="pb-poll-pct"></span></div><div class="pb-poll-option" data-poll="a7c0c379" data-idx="4" onclick="pbPollVote(this)"><span class="pb-poll-label">Не использую RSS</span><span class="pb-poll-bar"></span><span class="pb-poll-pct"></span></div></div> <h2 id="инструкция-по-настройке-подписки-на-сайте">Инструкция по настройке подписки на сайте</h2> <p>Процесс подключения к новостной ленте обычно интуитивно понятен, но может варьироваться в зависимости от верстки конкретного ресурса. Первым шагом всегда является поиск иконки RSS или ссылки с текстом «Подписаться» в футере сайта, боковой колонке или рядом с заголовком статьи. Современные браузеры, такие как Firefox или Safari, часто автоматически обнаруживают наличие фидов и подсвечивают иконку в адресной строке, предлагая добавить источник в закладки или выбранный ридер.</p> <p>Если автоматическое обнаружение не сработало, вы можете попробовать подставить стандартные окончания к домену сайта, так как многие CMS (системы управления контентом) генерируют ленты по шаблону. Например, для сайтов на WordPress адрес часто выглядит как <code>site.com/feed</code> или <code>site.com/feed/rss</code>. Для Joomla типичным путем является <code>site.com/index.php?option=com_syndication&feedtype=rss</code>. Зная эти закономерности, можно быстро найти источник даже на сайтах со скрытой навигацией.</p> <div class="pb-steps"><h4 class="pb-steps-title">☑️ Чек-лист успешной подписки</h4><label class="check-item"><input type="checkbox"><span>Найти иконку RSS или ссылку на сайте</span></label><label class="check-item"><input type="checkbox"><span>Скопировать URL-адрес ленты из адресной строки</span></label><label class="check-item"><input type="checkbox"><span>Открыть свой RSS-агрегатор (Feedly, Inoreader и др.)</span></label><label class="check-item"><input type="checkbox"><span>Нажать кнопку"Add Content" и вставить ссылку</span></label><label class="check-item"><input type="checkbox"><span>Проверить появление первых заголовков в ленте</span></label><div class="check-progress">Выполнено: <span class="check-count">0</span> / 5</div></div> <p>После добавления ссылки в агрегатор система может запросить подтверждение или предложить выбрать категорию для новой ленты. Рекомендуется сразу распределять источники по тематическим папкам (например, «Технологии», «Новости», «Блоги»), чтобы в будущем не запутаться в потоке информации. Если сайт требует авторизации для доступа к полному контенту, некоторые продвинутые ридеры позволяют ввести логин и пароль в настройках конкретного фида, хотя эта функция встречается всё реже из-за вопросов безопасности.</p> <p>В случае возникновения ошибок при добавлении, проверьте, не блокирует ли сайт доступ для ботов или не истек ли срок действия сертификата безопасности (HTTPS). Иногда помогает очистка кэша браузера или попытка добавить ссылку через режим инкогнито. Если лента отображается некорректно (например, вместо текста видны иероглифы), проблема может быть в кодировке файла, что решается настройками вашего RSS-клиента.</p> <h2 id="управление-контентом-и-фильтрация-новостей">Управление контентом и фильтрация новостей</h2> <p>При активном использовании десятков источников объем входящей информации может стать неуправляемым, поэтому инструменты фильтрации выходят на первый план. Большинство агрегаторов позволяют создавать правила, по которым определенные ключевые слова в заголовке или теле статьи будут автоматически помечаться как прочитанные или перемещаться в отдельную папку. Это эффективно работает для отсеивания спама, рекламы или тем, которые вам временно не интересны, например, спортивных новостей в рабочем профиле.</p> <div class="pb-table-wrap"><table> <thead> <tr> <th>Тип фильтра</th> <th>Действие</th> <th>Пример использования</th> <th>Сложность настройки</th> </tr> </thead> <tbody> <tr> <td>Ключевые слова</td> <td>Скрытие/Выделение</td> <td>Скрыть всё со словом"акция"</td> <td>Низкая</td> </tr> <tr> <td>Источник</td> <td>Пауза/Отписка</td> <td>Отключить ленту на выходные</td> <td>Низкая</td> </tr> <tr> <td>Категория</td> <td>Сортировка</td> <td>Все новости IT в папку"Работа"</td> <td>Средняя</td> </tr> <tr> <td>Автор</td> <td>Приоритет</td> <td>Помечать звездочкой статьи И. Иванова</td> <td>Высокая</td> </tr> </tbody> </table></div> <p>Функция «Отложить чтение» (Snooze) позволяет вернуть статью в ленту через заданный промежуток времени, если сейчас у вас нет возможности её изучить. Это помогает поддерживать ленту чистой, не теряя при этом важные материалы. Некоторые сервисы, такие как <strong>Inoreader</strong>, предлагают функции мониторинга, которые присылают push-уведомление только в том случае, если на сайте появилось упоминание конкретного бренда или персоны, что превращает RSS в мощный инструмент медиа-разведки.</p> <blockquote> <p>⚠️ <strong>Внимание:</strong> Чрезмерное использование фильтров по ключевым словам может создать «информационный пузырь», из-за которого вы перестанете видеть альтернативные точки зрения или важные новости, сформулированные другими словами.</p> </blockquote> <p>Регулярная чистка подписок — важная часть гигиены информационного пространства. Сайты закрываются, блоги забрасываются авторами, и мертвые ленты лишь занимают место в интерфейсе. Раз в квартал полезно просматривать список источников и отписываться от тех, где частота публикаций упала ниже приемлемого уровня или где качество контента снизилось. Это сохраняет фокус внимания и ускоряет загрузку приложения.</p> <aside class="pb-callout pb-callout-note"><span class="pb-callout-icon">💡</span><p>Используйте теги вместо папок для гибкости. Одна статья может относиться сразу к нескольким темам (например,"Apple" и"Финансы"), что невозможно при жесткой структуре папок, где файл лежит только в одном месте.</p></aside> <h2 id="проблемы-безопасности-и-приватности-при-использовании-rss">Проблемы безопасности и приватности при использовании RSS</h2> <p>Хотя сам протокол RSS является открытым и прозрачным, процесс подписки несет определенные риски для конфиденциальности пользователя. Когда вы добавляете ленту в облачный агрегатор, сервис получает информацию о том, какие сайты вы читаете, как часто и в какое время. Эти данные могут использоваться для построения профиля интересов и таргетированной рекламы, если политика конфиденциальности сервиса это допускает. В отличие от прямого захода на сайт, ридер выступает посредником, который видит весь ваш потребляемый контент.</p> <p>Существует риск подписки на вредоносные каналы, где в описание новости или в скрытые мета-теги внедрен JavaScript-код или ссылки на фишинговые ресурсы. Хотя современные ридеры обычно исполняют только безопасный HTML и блокируют скрипты, старые или самописные клиенты могут быть уязвимы к XSS-атакам (межсайтовый скриптинг). Всегда проверяйте надежность источника перед добавлением его в основной список, особенно если ссылка была получена из непроверенного письма или чата.</p> <p>Для максимальной приватности рекомендуется использовать локальные приложения, которые не отправляют историю чтения на внешние серверы. В этом случае ваш профиль интересов остается исключительно на вашем устройстве. Если вы вынуждены использовать облачные сервисы, внимательно изучите настройки приватности и отключите персонализацию рекламы, где это возможно. Также стоит использовать HTTPS-версии лент, чтобы избежать перехвата трафика провайдером, хотя большинство крупных изданий уже перешли на защищенное соединение.</p> <p>Некоторые корпоративные сети блокируют доступ к внешним RSS-агрегаторам или фильтруют контент лент на уровне прокси-сервера. В таких ситуациях может потребоваться настройка исключений в брандмауэре или использование VPN для доступа к необходимым профессиональным ресурсам. </p> <aside class="pb-callout pb-callout-note"><span class="pb-callout-icon">💡</span><p>Безопасность RSS: Локальные ридеры обеспечивают лучшую приватность, так как не передают данные о ваших интересах третьим лицам, в отличие от облачных сервисов, монетизирующих пользовательские данные.</p></aside> <h2 id="сравнение-rss-с-другими-способами-получения-новостей">Сравнение RSS с другими способами получения новостей</h2> <p>В эпоху доминирования социальных сетей многие пользователи задаются вопросом, зачем нужен RSS, если есть умные ленты Facebook, Twitter или Telegram-каналы. Главное отличие заключается в контроле: в соцсетях алгоритм решает, что вам показать, основываясь на вовлеченности и времени просмотра, часто продвигая эмоциональный или спорный контент. RSS же предоставляет контент строго в хронологическом порядке и только от тех источников, которые вы выбрали сами, без скрытой цензуры или приоритетов рекламодателей.</p> <p>Email-рассылки являются ближайшим конкурентом RSS, но они имеют существенные недостатки. Письма занимают место на почтовом сервере, часто попадают в спам и требуют ручной отписки через неудобные формы. Кроме того, верстка писем часто ломается на разных устройствах, а картинки могут не загружаться без разрешения пользователя. RSS-агрегаторы лишены этих проблем, предоставляя унифицированный, легкий интерфейс для чтения текста, независимо от того, откуда пришла новость.</p> <p>Push-уведомления хороши для экстренных новостей, но они слишком агрессивны для регулярного потребления контента. Постоянные звуковые сигналы и всплывающие окна отвлекают от работы и дробят внимание. RSS позволяет накапливать новости и читать их пачками в удобное время (батчинг), что повышает продуктивность и снижает уровень цифрового стресса. Вы сами решаете, когда зайти в ленту, а не телефон диктует вам расписание.</p> <p>Тем не менее, у RSS есть и слабые стороны: отсутствие интерактивности (сложнее комментировать и обсуждать сразу), отсутствие визуального разнообразия (ленты часто текстовые) и необходимость ручной курации источников. Для развлекательного контента, мемов и коротких видео социальные сети остаются безальтернативными лидерами. Оптимальная стратегия — гибридная: использовать RSS для профессионального развития и серьезных новостей, а соцсети оставить для досуга и общения.</p> <details> <summary>Можно ли читать RSS без установки специальных программ?</summary> <p>Да, многие современные браузеры имеют встроенную поддержку или позволяют устанавливать легкие расширения, которые превращают вкладку в ленту новостей. Также некоторые почтовые клиенты (например, Thunderbird) умеют работать с RSS-фидами как с обычными письмами.</p> </details> <details> <summary>Почему некоторые сайты убрали иконку RSS?</summary> <p>Владельцы сайтов часто скрывают RSS, чтобы заставить пользователей заходить на страницу напрямую. Это увеличивает количество показов рекламы, время сессии и глубину просмотра, что положительно влияет на монетизацию ресурса.</p> </details> <details> <summary>Берет ли мобильный оператор плату за RSS-трафик?</summary> <p>Трафик RSS-лент тарифицируется как обычный интернет-трафик. Если у вас безлимитный тариф, дополнительных списаний не будет. Если тариф пакетный, то объем потраченных мегабайт будет вычитаться из вашего пакета.</p> </details> <details> <summary>Как экспортировать свои подписки в другой сервис?</summary> <p>Ищите в настройках текущего агрегатора функцию"Export OPML". Это создаст файл со списком всех ваших ссылок, который можно загрузить ("Import OPML") в любой другой RSS-сервис, сохранив структуру папок.</p> </details> <details> <summary>Что делать, если лента перестала обновляться?</summary> <p>Проверьте доступность сайта вручную. Если сайт работает, возможно, изменилась структура ленты. Попробуйте удалить и заново добавить ссылку. Если проблема массовая, возможно, сервер источника временно недоступен.</p> </details></div> </article> </div> </div> </main> <section class="pb-related-bottom"> <div class="pb-container"> <h2 class="pb-related-heading">📖 Читайте также</h2> <div class="pb-related-list"><a href="/articles/k/ka/kak-oformit-podpisku-microsoft-365-dlya-semi.html" class="pb-related-card"> <span class="pb-related-title">Как оформить подписку Microsoft 365 для семьи: полная инструкция</span> <span class="pb-related-desc">Пошаговое руководство по покупке и настройке Microsoft 365 Family. Как добавить участников, разделит</span> </a><a href="/articles/k/ka/kak-v-get-kontakte-udalit-premium-podpisku.html" class="pb-related-card"> <span class="pb-related-title">Как отключить Премиум в ГетКонтакте: полная инструкция</span> <span class="pb-related-desc">Пошаговое руководство по удалению подписки GetContact Premium. Как отписаться через приложение, App </span> </a><a href="/articles/k/ka/kak-otmenit-podpiski-na-youtube.html" class="pb-related-card"> <span class="pb-related-title">Как отменить подписки на YouTube: Полная инструкция 2026</span> <span class="pb-related-desc">Пошаговое руководство, как отключить платные подписки YouTube Premium, каналы и YouTube Music на тел</span> </a><a href="/articles/c/ch/chto-budet-esli-ne-prodlit-podpisku-ofis-365.html" class="pb-related-card"> <span class="pb-related-title">Что будет если не продлить подписку Office 365: последствия</span> <span class="pb-related-desc">Полный разбор последствий истечения срока подписки Office 365. Узнайте, что происходит с файлами, до</span> </a><a href="/articles/k/ka/kak-polzovatsya-microsoft-bez-podpiski.html" class="pb-related-card"> <span class="pb-related-title">Как пользоваться Microsoft без подписки: способы и бесплатные аналоги</span> <span class="pb-related-desc">Полный гайд по использованию сервисов Microsoft без оплаты. Веб-версии Office, бесплатные лицензии и</span> </a><a href="/articles/k/ka/kak-sdelat-podpisku-office-365.html" class="pb-related-card"> <span class="pb-related-title">Как оформить подписку Office 365: пошаговая инструкция и тарифы</span> <span class="pb-related-desc">Полный гайд по активации Office 365. Сравнение тарифов, способы оплаты, установка приложений и настр</span> </a></div> </div> </section> <footer class="pb-footer"> <div class="pb-container"> <div class="pb-footer-top"> <div class="pb-footer-brand">📱 О подписках</div> <p class="pb-footer-desc"></p> </div> <div class="pb-footer-links"> <div class="pb-footer-cats"><a href="/category/yandeks-plyus/">🟡 Яндекс Плюс</a> · <a href="/category/mobilnye-operatory/">📶 Мобильные операторы</a> · <a href="/category/onlajn-kinoteatry/">🎬 Онлайн кинотеатры</a> · <a href="/category/apple-i-ios/">🍎 Apple и iOS</a> · <a href="/category/sotsialnye-seti/">👥 Социальные сети</a> · <a href="/category/igrovye-servisy/">🎮 Игровые сервисы</a></div> <div class="pb-footer-info"> <a href="/">Главная</a> · <a href="/about.html">О проекте</a> · <a href="/contact.html">Контакты</a> · <a href="/privacy.html">Конфиденциальность</a> </div> </div> <div class="pb-footer-bottom"> <p>© О подписках. Все права защищены.</p> <!--LiveInternet counter--><div style="margin-top:10px;"><a href="https://www.liveinternet.ru/click" target="_blank"><img id="licnt06C4" width="88" height="15" style="border:0" title="LiveInternet: показано число посетителей за сегодня" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7" alt=""/></a><script>(function(d,s){d.getElementById("licnt06C4").src= "https://counter.yadro.ru/hit?t26.5;r"+escape(d.referrer)+ ((typeof(s)=="undefined")?"":";s"+s.width+"*"+s.height+"*"+ (s.colorDepth?s.colorDepth:s.pixelDepth))+";u"+escape(d.URL)+ ";h"+escape(d.title.substring(0,150))+";"+Math.random()})(document,screen)</script></div><!--/LiveInternet--> </div> </div> </footer> <div id="cookie-consent" class="pb-cookie"> <div class="pb-cookie-inner"> <span>🍪 Мы используем файлы cookie для улучшения работы сайта.</span> <button id="cookie-accept" class="pb-cookie-btn">Принять</button> </div> </div> <script src="/static/js/main.js"></script> <script> document.getElementById('pbMenuBtn')?.addEventListener('click', () => { document.getElementById('pbMainNav')?.classList.toggle('pb-nav-open'); }); // Dropdown menu toggle (click for touch devices) document.querySelectorAll('.pb-dropdown-toggle').forEach(btn => { btn.addEventListener('click', (e) => { e.stopPropagation(); btn.closest('.pb-nav-dropdown').classList.toggle('pb-dd-open'); }); }); document.addEventListener('click', () => { document.querySelectorAll('.pb-nav-dropdown.pb-dd-open').forEach(d => d.classList.remove('pb-dd-open')); }); (function() { const popup = document.getElementById('cookie-consent'); const btn = document.getElementById('cookie-accept'); if (popup && btn && !localStorage.getItem('cookie-accepted')) { setTimeout(() => popup.classList.add('pb-cookie-visible'), 1500); btn.onclick = () => { localStorage.setItem('cookie-accepted','true'); popup.classList.remove('pb-cookie-visible'); }; } })(); </script> <script> function pbPollVote(el) { var poll = el.closest('.pb-poll'); if (poll.classList.contains('voted')) return; poll.classList.add('voted'); el.classList.add('selected'); var opts = poll.querySelectorAll('.pb-poll-option'); var n = opts.length; var raw = []; var sum = 0; for (var i = 0; i < n; i++) { var v = Math.random() * 50 + 5; if (opts[i] === el) v += 30; raw.push(v); sum += v; } var pcts = raw.map(function(v) { return Math.round(v / sum * 100); }); var diff = 100 - pcts.reduce(function(a,b){ return a+b; }, 0); pcts[Array.from(opts).indexOf(el)] += diff; setTimeout(function() { opts.forEach(function(opt, i) { opt.querySelector('.pb-poll-bar').style.width = pcts[i] + '%'; opt.querySelector('.pb-poll-pct').textContent = pcts[i] + '%'; }); }, 50); } </script> <script src="/static/js/inject.js" defer></script> </body> </html>