Метка «chrome extensions»

Новый хаб «Chrome Extensions»В классификаторе расширений браузеров произошло изменение. Все многочисленные статьи про расширения Хрома теперь можно пометить этим хабом, что призываю сделать авторов ранее написанных статей. Кроме этого, по случаю праздника, хотел бы написать обзор о расширениях и юзерскриптах Хрома, о том, как они сформировались и к какому виду пришли.

Читать полностью »

Добрый день, уважаемые читатели. Сегодня хочу поделиться с Вами кодами на Javascript для возможности перекачивания музыки и видео с ВК своими ручками на свой персональный компьютер. Ведь нетрудно себе представить, как записал клевый клип и музыку, потом закачал их туда, но на твоем компьютере все это добро куда то пропало… Что ж, не беда! Мы выкачаем то, что мы закачали туда обратно. Главное, что нам это наш браузер, да сайт позволяют, осталось пораскинуть мозгами.

Для начала нам надо распарсить аудиофайлы… Итак, возьмемся за класс «area clear_fix» и будем пихать в массив то, что принадлежит к классу «play_new». Сначала присвоим в массиве стили, чтобы отловить положение элементов на странице (в последующем для отображения кнопочек рядышком). Потом получим ссылки из input и имя будущего файла из тега b. Потом нужно будет присваивать новым ссылочкам, которые мы будем создавать атрибут download.

function audio(){
var main_div=document.getElementsByClassName("area clear_fix");
for(var i=0;i<main_div.length;i++){
if(main_div[i].parentNode.firstChild.href){
main_div[i].parentNode.firstChild.style.top=main_div[i].getElementsByClassName('play_new')[0].offsetTop+"px";
continue;
}
var _mp3_=main_div[i].getElementsByTagName("input")[0].value.split(",")[0];
var _b_=main_div[i].getElementsByTagName("b")[0];
var _top_=document.getElementById(main_div[0].parentNode.id.replace('audio','play')).offsetTop+"px";
var _t_=main_div[i].getElementsByClassName('play_new')[0].offsetTop+"px";
 var span=main_div[i].getElementsByTagName('span')[0];
 var ispan=span.innerHTML;
  if(span.children[0]){
   var ispan=span.children[0].innerHTML;
  }
var _a_=document.createElement("a");
//_a_.href=""+_mp3_+"&name="+_b_.children[0].innerHTML+"-"+ispan;
_a_.href = _mp3_.substring(0, _mp3_.indexOf('.mp3') + 4);
_a_.download=trim(_b_.children[0].innerHTML+"-"+ispan)+".mp3";
_a_.title='Скачать '+_b_.children[0].innerHTML+"-"+ispan;
_a_.draggable="true";
_a_.innerHTML='<span style="cursor:copy;padding:6px;width:16px;height:16px;background-color:#5F7D9D;color:#fff;border-radius:2px;"><img src="http://st0.vk.me/images/icons/darr.gif" /></span>';
_a_.style.zIndex="10";
_a_.style.left="30px";
_a_.style.top=_t_;
_a_.style.position="absolute";
main_div[i].parentNode.insertBefore(_a_,main_div[i].parentNode.firstChild);
_b_.style.paddingLeft="27px";
}
}

Тут как бы понятно должно быть, все… ну а чтобы отрезать всякий мусор после расширения файла мы применили:
_a_.href = _mp3_.substring(0, _mp3_.indexOf('.mp3') + 4);

В общем уже можно это запустить таким образом через интервал, конечно же если мы находимся на том самом сайте:

setInterval(function(){
  if(window.location.href.indexOf('vk.com')>1) {
 if(document.getElementsByClassName("area clear_fix").length!=0){
  audio();
  }   }  },1000);

Хорошо. Одна функция готова. Пора поведать и о том как скачать видеофайлы…

Читать полностью »

В своем комментарии: habrahabr.ru/post/177709/#comment_6169843 я описал проблему расширения из соответствующей статьи, кроме редиректов также есть проблемы с выводом логов AJAX запросов и возможно в некоторых случаях с iframe заголовками.
Я решил разобраться почему это происходит и понял, что то мое утверждение было слишком категоричным. После того как webRequest перестал быть экспериментальным developer.chrome.com/extensions/experimental.webRequest.html теперь можно писать логеры «на заголовках» обрабатывающие все, ранее проблемные, ситуации. Я не ставлю своей целью разобрать все такие ситуации, просто хотел бы показать — как можно модифицировать расширение Chrome Logger для решения части вышеуказанных проблем и возможно заинтересовать желающих разобраться с расширениями Google Chrome на простом примере. Может быть у кого-то после прочтения поста возникнет желание написать свое расширение.
Читать полностью »

Я уже с 25 февраля завидую этим владельцам светофора. В целом визуализация мониторинга всегда была для меня интереснее, чем уведомления по почте или смс. Но все сводилось к отдельной страничке с состоянием системы, на которую нужно было заходить для проверки. А вот после прочтения поста и осознания, что светофор слишком экстравагантный инструмент, появилась интересная мысль — реализовать светофор в браузере! Ведь сейчас мы практически каждые несколько минут открываем браузер за тем или иным. Подробности под катом.
Читать полностью »

Доброе утро хабр.
Более полу года назад я решил обновить моё первое и единственное расширение для chrome.
Не очень замысловатый таймер с возможностью запускать несколько счётчиков одновременно, первый в своём роде :), но не в этом суть.
С разработкой расширения мне очень помогал Web Inspector. Вызывается эта утилита не так легко как для простой странички, а по специальной ссылке, сгенерированной для каждой страницы расширения.
Читать полностью »

Устанавливаемые и стандартные расширения Гугл хром для оптимизации фронт-енда.
Читать полностью »

Привет читатели!
Увидев мой проект в блоге компании Zfort Group (тут) я решил поделится с вами обзором про проект и его реализацией.

Идея: быстро создать базовый шаблон для дополнений хрома, включая конфиг в manifest.json.
Extensionizr.com построен как веб-приложение, и на выходе генерирует zip архив.
Всё происходит на стороне клиента с помощью Javascript, включая архивацию.

Extensionizr — шаблонизатор дополнений для хрома
Читать полностью »

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

Задача:
Создать расширение для браузера Chrome, которое сможет в любой из открытых табов внедрить необходимый контент и небольшой управляющий модуль для него, и если этот контент внедрен в несколько разных табов, то управляющие модули должны иметь возможность между собой общаться.

Доступные инструменты:
Content Scripts, Background Pages, Message Passing

Алгоритм решения:
Создать общий управляющий модуль который будет создавать модули потомки и управлять ими, наладить с каждым из них механизм обратной связи.

Читать полностью »

Введение

Комментирование статей в СМИ и блогах давно вошло в привычку.
Комментарии — это удобный инструмент для обмена мнениями между читателями, установления обратной связи с автором и возможность отразить альтернативные точки зрения и т.п. Отдельно стоит отметить, что комментарии оказывают существенное влияние на восприятие и оценку информации, приведённой в статье.
Всё это работает при условии что в процессе участвуют на равных условиях адекватные пользователи уважающие мнение друг друга.
Однако, есть личности которые не готовы играть по общим правилах. Они не готовы ужиться с тем, что нормальные пользователи мирно обмениваются мнениями и информацией. Эти личности также обладают достаточными ресурсами для нарушения равновесия. Они натравливают ботов и Путин-югенд на мирных комментаторов. Баланс таким образом нарушается. За счёт материальных ресурсов, тот кто обладает одним голосом получает возможность значительно большего влияния на общественное мнение.
Читать полностью »

Hello.

Ответьте, уважаемые читатели, мне на один вопрос — не должны ли вы сейчас заниматься каким нибудь полезным делом вместо чтения Хабра? Возможно над вами нависает проект, который необходимо отослать уже вчера? Или лабораторная в университете, которую нужно сдавать уже сегодня утром? Или экзамен, собеседование, а может семья, или просто хорошая книга?

Но вы здесь. Или еще где-то, но только не там, где должны.

image

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js