Скрытый текст, который не индексируется.

Рубрики: JavaScript, Разработка сайтов и скриптов  

Постовой: Часто нет времени прочитать книгу для души. Аудиокниги из серии Модель для сборки

В качестве эксперимента и скорее хака придумался способ создать блок ссылок, который не будет индексироваться. Смысл в том, что поисковики не индексируют яваскрипт. Например, я хочу прорекламировать сайты, но не явно. Если кто-то хочет посмотреть – посмотрит, другие нет.

Смысл в том, чтобы засунуть текст в переменную JavaScript, а по клику на ссылку дать диву ее содержимое. Работает следующим образом:

Крутые сайты

А вот и код:

<script> var sometext = «Это текст, который не должен индексироваться поисковиками.<br>Например, куча говноссылок на говносайты. Ура!»;</script>
<a href=»javascript: void();» onclick=»document.getElementById(‘text’).innerHTML = sometext;»>Крутые сайты</a><div id=»text»></div>

Зачем, спрашивается, очередной способ скрыть блок, если есть nofollow, noindex? Не знаю. Просто пришла в голову идея.

Комментариев: (12)


Удаление сообщений со стены ВКонтакте (пишем скрипт).

Рубрики: JavaScript  

Постовой (*): Комплексная оптимизация и продвижение сайта – основные направления деятельности нашей Компании.

Сразу оговорюсь. Скрипт не полностью автоматический, удаляет сообщения только с текущей страницы стены. Связано это с тем, что написан на коленке в 5 утра, с другой стороны с тем, что я не придумал как перезагружать страницу так, чтобы скрипт оставался в памяти браузера (поэтому если у кого-то есть идеи прошу отписаться во благо всех нас, Великого Павла Дурова и Господа Нашего Б-га, аминь).

С другой стороны, так за 2 минуты можно очистить больше сотни сообщений – а что еще нужно? У меня за 3 года накопилось всего 500, а удаление заняло минут 5 (всплакнул крупной суровой мужской слезой).

Скрипт лучше рассматривать как тренировку JavaScript для программистов и баттхерт для простых пользователей (почему – смотри ниже). Поэтому если ты, дорогой читатель, «простой пользователь», немного пошевелить разными там химикалиями в мозгах все же придется (можно сразу смотреть «Часть 3″).

Часть 1. Обратите внимание на кавычки! При перепечатке в блог они «поехали», нужно подправить вручную. Начну с обзора того, что мы будем делать. Стена ВКонтакте располагается по адресу vkontakte.ru/wall.php. Если мы заглянем в код страницы и посмотрим на ссылку удаления, то увидим следующее:

<a href=»" onclick=»(deletePost(…));return false;»>Удалить</a>

То есть совершенно недвусмысленно понятно, что у ВКонтакта есть функция deletePost, которая и применяется. Например, все скрипты, которые я смог нагуглить применяли давно устаревший API, из-за чего и не работали.

Мы знаем, что в JavaScript любой код можно исполнить с помощью функции eval(). Например код:

eval («alert (‘a’)»);

выдаст нам окошко с сообщением «а». То есть функции eval мы передаем строку, которую она выполняет как если бы такой же javascript был написан в сценарии (подробнее смотри, например, здесь).

Кроме того, нужно не забывать, что работать скрипт должен по таймеру. Сервер просто не успеет обработать 20 запросов (а именно столько сообщений на одной странице) за секунду и просто напросто не ничего удалит. И хорошо, если еще и бан не получим.

В остальном, в общем-то, всё. Единственное, пожалуй, из не-технического: желательно выводить предупреждение, чтобы случайно не удалить сообщения. Пусть даже и с одной страницы.

Часть 2. Теперь сам скрипт и как он работает.

var i = 0 , step_t;

function Step(){
	var myregexp = /<a onclick="(deletePost\(.+\));return false;">Удалить<\/a>/g;
	var match = myregexp.exec(document.body.innerHTML);
	if(match != null){
		eval (match[1]);
		i = i + 1;
	}

	if (i >= 20){
		clearInterval (step_t);
	}
}

if (confirm('Удалить все сообщения со стены?') == true){
	step_t = setInterval("Step()", 500);
}

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

При старте скрипта мы выводим сообщение с помощью confirm (Yes/No Dialog Box) и проверяем ответ. Если ответ был «Да» («Ок» и т.п.), то мы запускаем таймер с помощью setInterval. Таймер срабатывает каждые пол-секунды (второй параметр) и вызывает при каждом срабатывании функцию Step(). Идентификатор таймера step_t (от step timer).

Отлично, теперь таймер запущен и каждые пол-секунды вызывается функция Step(), где и спрятан по сути весь скрипт.

Первым делов в этой функции мы находим на странице строку, содержащую deletePost и вытаскиваем её целиком.

Короткая справка по JavaScript регулярным выражениям (подробнее, например, здесь).

Регулярные выражения в JavaScript можно инициализировать с помощью строки вида /pattern/mods. Где под pattern понимается само регулярное выражение, под mods – модификаторы. Как обычно, все символы «/» нужно закрыть слева-стоящим  »\» если они не являются модификаторами.

При этом здесь мы используем простую конструкцию «.+». Символ «точка» означает в ней «любой символ», а «плюс» – «один или больше». То есть получается «один или больше одного любых символов». Скобками нужно отметить тот участок, который мы хотим выцепить в результате. И, конечно, надо учитывать, что если скобка есть в самой строке, по которой мы делаем поиск, то её нужно «экранировать» с помощью «\».

После всего этого регулярка «запускается» с помощью pattern.exec(string), где pattern – наша регулярка, string – то, по чему мы будем искать, а exec – функция выполнения.

Краткая справка закончена, всем спасибо. *кланяется*

Итак, мы создаем регулярное выражение вида «/<a href=»" onclick=»(deletePost\(.+\));return false;»>Удалить<\/a>/g» (хочу обратить внимание, что в коде оно должно использоваться без кавычек). И обрабатываем с его помощью все тело документа (которое хранится, как мы знаем, в document.body.innerHTML).

Как итог вечеринки найденная строка попадает в match[1] (ибо сам по себе match – это массив строк; например в match[0] хранится полностью найденное выражение, а match[2] не существует, т.к. скобками, с помощью которых «выцепляется» нужный фрагмент, у нас «огорожен» только один кусок).

Дальше все еще проще. В match[1] у нас попадает строка вида «deletePost(…)». Нам нужно её просто выполнить. Поэтому мы используем eval() и передаем ему в качестве аргумента найденное значение (ведь оно содержит уже и имя выполняемой функции – deletePost).

На всякий случай добавлена проверка – если match равен null, значит мы ничего не нашли и удалять нам нечего.

Счетчик i служит для определения – сколько сообщений мы уже удалили. Мы знаем, что на странице у нас всего 20 сообщений, поэтому добавлено условие i >= 20. Когда это условие выполняется, мы останавливаем таймер с помощью clearInterval() (функция принимает на входе идентификатор таймера).

Вот, собственно и вся логика работы скрипта.

Часть 3. Лично я «сижу» в Chrome, поэтому, чтобы запустить скрипт, мне нужно сделать следующее:

1) Перейти на страницу vkontakte.ru/wall.php
2) Нажать правой кнопкой куда-нить и выбрать «Проверить элемент». Откроется новое окно.
3) В нем нажать «Console», скопировать туда весь скрипт целиком и нажать Enter.

Для пользователей FireFox существует дополнение FireBug, позволяющее сделать то же самое (описывать его я здесь не буду и если будут вопросы – велкам в комментарии).

Комментариев: (38)


Еще одна причина изучить JavaScript для программиста

Рубрики: JavaScript  

javascript_call

Сейчас я хочу немного поговорить о JavaScript, не в ключе Web. Что я для себя обнаружил и почему этот язык мне резко понравился?

Дело вот в чем. Программисты тоже люди, как бы странно это не звучало :), живут в обычном мире, считают деньги, делают покупки. Иногда программистам приходится решать какие-то математические задачи, будь то сложные задачи на теорию вероятности или простые задачи вроде «купил хлеб, молоко, и сметану».

Иногда проще написать короткую программу, чем высчитывать что-то на калькуляторе или (боже упаси) в уме. Когда я учился, у меня был преподаватель, который даже чтобы сложить три числа открывал Borland C++ 3.1, писал что-то вроде printf («%d», 100 + 200 + 300); и таким образом складывал. Когда я увидел это в первый раз, это вызвало легкий шок, но запало в душу. Наверное, вот они какие, труе-программисты.
Читать полностью »

Комментариев: (33)


Прикольные скрывающиеся-открывающиеся блоки

Рубрики: JavaScript, Общие советы, на WordPress  

Постовой: полипропиленовые трубы

Немного поменял дизайн сайта. В частности – слишком много разных ссылок, счетчиков и прочего не нужного в сайдбаре. Одним из способов, которым я скрыл лишнее – это открывающие блоки. Чтобы понять о чем я, посмотрите справа на этом сайте – нажмите на ссылку «…еще» в подписке или «больше!» в счетчиках.

То есть работает так. Предположим, мне нужно скрыть 10 счетчиков, которые на странице смотрятся довольно уродски. Засовываю их в такой вот блок, делаю ссылку. Юзер жмет на ссылку и ему открывается блок, а сама ссылка исчезает. Таким образом можно скрыть что угодно – «лишние» способы подписки (самый популярный RSS, а на остальное подписываются редко), какую-нибудь навязчивую инфу об авторе сайта, рекламные баннеры, категории, что угодно. Как это сделать?

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

Комментариев: (15)




dimoning.ru
SEO и программирование.
  • Рубрики:



  • Рассылка:

  • Дополнительно:

  • По месяцам:

  • Счетчики:

    Яндекс цитирования
  • Спонсоры:


  • dimoning.ru © 2008-2011 г.
    Все материалы авторские, но их можно копировать с указанием прямой ссылки на источник.