<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DimoninG.ru &#187; JavaScript</title>
	<atom:link href="http://dimoning.ru/category/dev/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://dimoning.ru</link>
	<description>программирование сайтов и скриптов</description>
	<lastBuildDate>Fri, 13 Jan 2012 22:38:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Скрытый текст, который не индексируется.</title>
		<link>http://dimoning.ru/hidden-non-index-text-javascript.html</link>
		<comments>http://dimoning.ru/hidden-non-index-text-javascript.html#comments</comments>
		<pubDate>Sat, 21 May 2011 12:15:40 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Разработка сайтов и скриптов]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1607</guid>
		<description><![CDATA[Постовой: Часто нет времени прочитать книгу для души. Аудиокниги из серии Модель для сборки
В качестве эксперимента и скорее хака придумался способ создать блок ссылок, который не будет индексироваться. Смысл в том, что поисковики не индексируют яваскрипт. Например, я хочу прорекламировать сайты, но не явно. Если кто-то хочет посмотреть &#8211; посмотрит, другие нет.
Смысл в том, чтобы [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Постовой: </strong>Часто нет времени прочитать книгу для души. Аудиокниги из серии <a href="http://mdsblog.ru/o-mds/">Модель для сборки</a></em></p>
<p>В качестве эксперимента и скорее хака придумался способ создать блок ссылок, который не будет индексироваться. Смысл в том, что поисковики не индексируют яваскрипт. Например, я хочу прорекламировать сайты, но не явно. Если кто-то хочет посмотреть &#8211; посмотрит, другие нет.</p>
<p>Смысл в том, чтобы засунуть текст в переменную JavaScript, а по клику на ссылку дать диву ее содержимое. Работает следующим образом:</p>
<p><script type="text/javascript">// <![CDATA[
 	var sometext = "Это текст, который не должен индексироваться поисковиками. Например, куча говноссылок на говносайты. Ура!";
// ]]&gt;</script></p>
<p><a onclick="document.getElementById('text').innerHTML = sometext;" href="javascript: void();">Крутые сайты</a></p>
<p>А вот и код:</p>
<p>&lt;script&gt;	var sometext = &laquo;Это текст, который не должен индексироваться поисковиками.&lt;br&gt;Например, куча говноссылок на говносайты. Ура!&raquo;;&lt;/script&gt;<br />
&lt;a href=&raquo;javascript: void();&raquo; onclick=&raquo;document.getElementById(&#8216;text&#8217;).innerHTML = sometext;&raquo;&gt;Крутые сайты&lt;/a&gt;&lt;div id=&raquo;text&raquo;&gt;&lt;/div&gt;</p>
<p>Зачем, спрашивается, очередной способ скрыть блок, если есть nofollow, noindex? Не знаю. Просто пришла в голову идея.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/hidden-non-index-text-javascript.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Удаление сообщений со стены ВКонтакте (пишем скрипт).</title>
		<link>http://dimoning.ru/vkontakte-delete-wall-script.html</link>
		<comments>http://dimoning.ru/vkontakte-delete-wall-script.html#comments</comments>
		<pubDate>Tue, 12 Oct 2010 02:59:11 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[vkontakte]]></category>
		<category><![CDATA[вконтакте]]></category>
		<category><![CDATA[стена]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1503</guid>
		<description><![CDATA[Постовой (*): Комплексная оптимизация и продвижение сайта &#8211; основные направления деятельности нашей Компании.
Сразу оговорюсь. Скрипт не полностью автоматический, удаляет сообщения только с текущей страницы стены. Связано это с тем, что написан на коленке в 5 утра, с другой стороны с тем, что я не придумал как перезагружать страницу так, чтобы скрипт оставался в памяти браузера [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Постовой (<a href="http://dimoning.ru/reklama" target="_blank">*</a>):</strong> Комплексная оптимизация и <a href="http://www.i-media.ru/seo">продвижение сайта</a> &#8211; основные направления деятельности нашей Компании.</p>
<p>Сразу оговорюсь. Скрипт не полностью автоматический, удаляет сообщения только с текущей страницы стены. Связано это с тем, что написан на коленке в 5 утра, с другой стороны с тем, что я не придумал как перезагружать страницу так, чтобы скрипт оставался в памяти браузера (поэтому если у кого-то есть идеи прошу отписаться во благо всех нас, Великого Павла Дурова и Господа Нашего Б-га, аминь).</p>
<p>С другой стороны, так за 2 минуты можно очистить больше сотни сообщений &#8211; а что еще нужно? У меня за 3 года накопилось всего 500, а удаление заняло минут 5 (всплакнул крупной суровой мужской слезой).</p>
<p>Скрипт лучше рассматривать как тренировку JavaScript для программистов и баттхерт для простых пользователей (почему &#8211; смотри ниже). Поэтому если ты, дорогой читатель, &laquo;простой пользователь&raquo;, немного пошевелить разными там химикалиями в мозгах все же придется (можно сразу смотреть &laquo;Часть 3&#8243;).</p>
<p><strong>Часть 1. Обратите внимание на кавычки! При перепечатке в блог они &laquo;поехали&raquo;, нужно подправить вручную. </strong>Начну с обзора того, что мы будем делать. Стена ВКонтакте располагается по адресу vkontakte.ru/wall.php. Если мы заглянем в код страницы и посмотрим на ссылку удаления, то увидим следующее:</p>
<blockquote><p>&lt;a href=&raquo;" onclick=&raquo;(deletePost(&#8230;));return false;&raquo;&gt;Удалить&lt;/a&gt;</p></blockquote>
<p>То есть совершенно недвусмысленно понятно, что у ВКонтакта есть функция deletePost, которая и применяется. Например, все скрипты, которые я смог нагуглить применяли давно устаревший API, из-за чего и не работали.</p>
<p>Мы знаем, что в JavaScript любой код можно исполнить с помощью функции eval(). Например код:</p>
<blockquote><p>eval (&laquo;alert (&#8216;a&#8217;)&raquo;);</p></blockquote>
<p>выдаст нам окошко с сообщением &laquo;а&raquo;. То есть функции eval мы передаем строку, которую она выполняет как если бы такой же javascript был написан в сценарии (подробнее смотри, например, <a href="http://dimoning.ru/r.php?url=http://www.w3schools.com/jsref/jsref_eval.asp" target="_blank">здесь</a>).</p>
<p>Кроме того, нужно не забывать, что работать скрипт должен по таймеру. Сервер просто не успеет обработать 20 запросов (а именно столько сообщений на одной странице) за секунду и просто напросто не ничего удалит. И хорошо, если еще и бан не получим.</p>
<p>В остальном, в общем-то, всё. Единственное, пожалуй, из не-технического: желательно выводить предупреждение, чтобы случайно не удалить сообщения. Пусть даже и с одной страницы.</p>
<p><strong>Часть 2. </strong>Теперь сам скрипт и как он работает.</p>
<pre>var i = 0 , step_t;

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

	if (i &gt;= 20){
		clearInterval (step_t);
	}
}

if (confirm('Удалить все сообщения со стены?') == true){
	step_t = setInterval("Step()", 500);
}</pre>
<p>Скрипт очень маленький, очень простой и понятный. С другой стороны на его примере можно узнать как использовать регулярные выражения и таймеры.</p>
<p>При старте скрипта мы выводим сообщение с помощью confirm (Yes/No Dialog Box) и проверяем ответ. Если ответ был &laquo;Да&raquo; (&laquo;Ок&raquo; и т.п.), то мы запускаем таймер с помощью setInterval. Таймер срабатывает каждые пол-секунды (второй параметр) и вызывает при каждом срабатывании функцию Step(). Идентификатор таймера step_t (от step timer).</p>
<p>Отлично, теперь таймер запущен и каждые пол-секунды вызывается функция Step(), где и спрятан по сути весь скрипт.</p>
<p>Первым делов в этой функции мы находим на странице строку, содержащую deletePost и вытаскиваем её целиком.</p>
<p><em>Короткая справка по JavaScript регулярным выражениям (подробнее, например, <a href="http://dimoning.ru/r.php?url=http://wdh.suncloud.ru/js05.htm" target="_blank">здесь</a>).</em></p>
<p>Регулярные выражения в JavaScript можно инициализировать с помощью строки вида /pattern/mods. Где под pattern понимается само регулярное выражение, под mods &#8211; модификаторы. Как обычно, все символы &laquo;/&raquo; нужно закрыть слева-стоящим  &raquo;\&raquo; если они не являются модификаторами.</p>
<p>При этом здесь мы используем простую конструкцию &laquo;.+&raquo;. Символ &laquo;точка&raquo; означает в ней &laquo;любой символ&raquo;, а &laquo;плюс&raquo; &#8211; &laquo;один или больше&raquo;. То есть получается &laquo;один или больше одного любых символов&raquo;. Скобками нужно отметить тот участок, который мы хотим выцепить в результате. И, конечно, надо учитывать, что если скобка есть в самой строке, по которой мы делаем поиск, то её нужно &laquo;экранировать&raquo; с помощью &laquo;\&raquo;.</p>
<p>После всего этого регулярка &laquo;запускается&raquo; с помощью pattern.exec(string), где pattern &#8211; наша регулярка, string &#8211; то, по чему мы будем искать, а exec &#8211; функция выполнения.</p>
<p><em>Краткая справка закончена, всем спасибо. *кланяется*</em></p>
<p>Итак, мы создаем регулярное выражение вида &laquo;/&lt;a href=&raquo;" onclick=&raquo;(deletePost\(.+\));return false;&raquo;&gt;Удалить&lt;\/a&gt;/g&raquo; (хочу обратить внимание, что в коде оно должно использоваться <em>без</em> кавычек). И обрабатываем с его помощью все тело документа (которое хранится, как мы знаем, в document.body.innerHTML).</p>
<p>Как итог вечеринки найденная строка попадает в match[1] (ибо сам по себе match &#8211; это массив строк; например в match[0] хранится полностью найденное выражение, а match[2] не существует, т.к. скобками, с помощью которых &laquo;выцепляется&raquo; нужный фрагмент, у нас &laquo;огорожен&raquo; только один кусок).</p>
<p>Дальше все еще проще. В match[1] у нас попадает строка вида &laquo;deletePost(&#8230;)&raquo;. Нам нужно её просто выполнить. Поэтому мы используем eval() и передаем ему в качестве аргумента найденное значение (ведь оно содержит уже и имя выполняемой функции &#8211; deletePost).</p>
<p>На всякий случай добавлена проверка &#8211; если match равен null, значит мы ничего не нашли и удалять нам нечего.</p>
<p>Счетчик i служит для определения &#8211; сколько сообщений мы уже удалили. Мы знаем, что на странице у нас всего 20 сообщений, поэтому добавлено условие i &gt;= 20. Когда это условие выполняется, мы останавливаем таймер с помощью clearInterval() (функция принимает на входе идентификатор таймера).</p>
<p>Вот, собственно и вся логика работы скрипта.</p>
<p><strong>Часть 3.</strong> Лично я &laquo;сижу&raquo; в Chrome, поэтому, чтобы запустить скрипт, мне нужно сделать следующее:</p>
<p>1) Перейти на страницу vkontakte.ru/wall.php<br />
2) Нажать правой кнопкой куда-нить и выбрать &laquo;Проверить элемент&raquo;. Откроется новое окно.<br />
3) В нем нажать &laquo;Console&raquo;, скопировать туда весь скрипт целиком и нажать Enter.</p>
<p>Для пользователей FireFox существует дополнение FireBug, позволяющее сделать то же самое (описывать его я здесь не буду и если будут вопросы &#8211; велкам в комментарии).</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/vkontakte-delete-wall-script.html/feed</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Еще одна причина изучить JavaScript для программиста</title>
		<link>http://dimoning.ru/esche-odna-prichina-izuchitsya-javascript-dlya-programmista.html</link>
		<comments>http://dimoning.ru/esche-odna-prichina-izuchitsya-javascript-dlya-programmista.html#comments</comments>
		<pubDate>Mon, 18 Jan 2010 17:22:17 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[javascript применение]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1447</guid>
		<description><![CDATA[
Сейчас я хочу немного поговорить о JavaScript, не в ключе Web. Что я для себя обнаружил и почему этот язык мне резко понравился?
Дело вот в чем. Программисты тоже люди, как бы странно это не звучало :), живут в обычном мире, считают деньги, делают покупки. Иногда программистам приходится решать какие-то математические задачи, будь то сложные задачи [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1448" title="javascript_call" src="http://dimoning.ru/wp-content/uploads/2010/01/javascript_call.png" alt="javascript_call" width="284" height="224" /></p>
<p>Сейчас я хочу немного поговорить о JavaScript, не в ключе Web. Что я для себя обнаружил и почему этот язык мне резко понравился?</p>
<p>Дело вот в чем. Программисты тоже люди, как бы странно это не звучало :), живут в обычном мире, считают деньги, делают покупки. Иногда программистам приходится решать какие-то математические задачи, будь то сложные задачи на теорию вероятности или простые задачи вроде &laquo;купил хлеб, молоко, и сметану&raquo;.</p>
<p>Иногда проще написать короткую программу, чем высчитывать что-то на калькуляторе или (боже упаси) в уме. Когда я учился, у меня был преподаватель, который даже чтобы сложить три числа открывал Borland C++ 3.1, писал что-то вроде printf (&laquo;%d&raquo;, 100 + 200 + 300); и таким образом складывал. Когда я увидел это в первый раз, это вызвало легкий шок, но запало в душу. Наверное, вот они какие, труе-программисты.<br />
<span id="more-1447"></span></p>
<p>Как пример, приведу задачку:</p>
<blockquote><p>&#8230;все кладут по одному подарку под ёлку, нумеруя их, а потом для каждого участника выбирают номер подарка, который он сейчас получит (обычно пользуются компьютерным генератором псевдослучайных чисел)&#8230; какова вероятность, что человек получит свой же подарок в зависимости от числа участников?</p>
<p><a href="http://dimoning.ru/r.php?url=http://my-tribune.blogspot.com/2009/11/blog-post_06.html" target="_blank">Ссылка</a> на задачу целиком.</p></blockquote>
<p>Подобные задачи проще всего решать с помощью программирования &#8211; просто смоделировав ситуацию и посмотрев, к какому числу будет стремиться вероятность, наращивая число участников.</p>
<p>Что делать, если эту задачу вдруг пришлось решать, например, в гостях, где есть компьютер, но нет ни одного компилятора? Совершенно верно, вот тут-то нам на ум и приходит JavaScript.</p>
<p>1) JavaScript есть на всех компьютерах, где есть браузер (читай: 99%);<br />
2) JavaScript позволяет решать и достаточно сложные задачи;</p>
<p>Я думаю, что изучить JavaScript имеет смысл хотя бы на такой вот непредвиденный случай. А если Вы не складываете два числа с помощью создания программы, Вам пора записываться в сис. админы ;) (шучу, конечно)</p>
<p><em>P.S. Теперь я буду писать сюда только про программирование, компьютеры и (возможно) девайсы. Честно предупредил, наконец-то блог будет выполнять ту функцию, ради которой он создавался. Все посты о заработке, СЕО и деньгах я теперь пишу в <a href="http://dimoning.ru/r.php?url=http://izombie.ru/" target="_blank">блог iZombie</a>.</em></p>
<p>P.S.-2 Обнаружил, что изображение к посту я случайно взял у simplecoding.org (просто погуглил), поэтому <a href="http://dimoning.ru/r.php?url=http://www.simplecoding.org/sokrashhaem-javascript-kod.html" target="_blank">благодарственная халявная ссылка</a>.</p>
<p><em>Постовой:</em> Алексей Крылышкин пишет про биржу <a href="http://www.seorp.ru/2010/01/gogetlinks-zarabotok-ssylkax-s-uzhe-proindeksirovannyx-stranic/">GoGetLinks, палит секреты</a> работы с Wordpress&#8217;ом на этой бирже.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/esche-odna-prichina-izuchitsya-javascript-dlya-programmista.html/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Прикольные скрывающиеся-открывающиеся блоки</title>
		<link>http://dimoning.ru/prikolnyie-skryivayuschiesya-otkryivayuschiesya-bloki.html</link>
		<comments>http://dimoning.ru/prikolnyie-skryivayuschiesya-otkryivayuschiesya-bloki.html#comments</comments>
		<pubDate>Wed, 15 Jul 2009 12:29:30 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Общие советы]]></category>
		<category><![CDATA[на WordPress]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1229</guid>
		<description><![CDATA[Постовой: полипропиленовые трубы
Немного поменял дизайн сайта. В частности &#8211; слишком много разных ссылок, счетчиков и прочего не нужного в сайдбаре. Одним из способов, которым я скрыл лишнее &#8211; это открывающие блоки. Чтобы понять о чем я, посмотрите справа на этом сайте &#8211; нажмите на ссылку &#171;&#8230;еще&#187; в подписке или &#171;больше!&#187; в счетчиках.
То есть работает так. [...]]]></description>
			<content:encoded><![CDATA[<p>Постовой: <a href="http://www.jakko.ru/">полипропиленовые трубы</a></p>
<p>Немного поменял дизайн сайта. В частности &#8211; слишком много разных ссылок, счетчиков и прочего не нужного в сайдбаре. Одним из способов, которым я скрыл лишнее &#8211; это открывающие блоки. Чтобы понять о чем я, посмотрите справа на этом сайте &#8211; нажмите на ссылку &laquo;&#8230;еще&raquo; в подписке или &laquo;больше!&raquo; в счетчиках.</p>
<p>То есть работает так. Предположим, мне нужно скрыть 10 счетчиков, которые на странице смотрятся довольно уродски. Засовываю их в такой вот блок, делаю ссылку. Юзер жмет на ссылку и ему открывается блок, а сама ссылка исчезает. Таким образом можно скрыть что угодно &#8211; &laquo;лишние&raquo; способы подписки (самый популярный RSS, а на остальное подписываются редко), какую-нибудь навязчивую инфу об авторе сайта, рекламные баннеры, категории, что угодно. Как это сделать?</p>
<p><span id="more-1229"></span>Все замешано на JavaScript. Для любопытных подчеркиваю &#8211; все просто, это не Ajax, а именно JavaScript. Связано это с тем, что лично меня раздражает, когда жмешь на ссылку, а там еще что-то пару секунд грузится. Мгнованная загрузка &#8211; это сила. А чтобы она 100% была мгновенной, это должна быть предзагрузка (то есть все грузится &laquo;в фоне&raquo; во время загрузки основной страницы). В данном случае это не замедляет загрузку, т.к. сами блоки не объемные.</p>
<p>Для начала нам понадобится функция:</p>
<blockquote><p>&lt;script language=&#8217;javascript&#8217;&gt;<br />
function showblock(title){<br />
document.getElementById(title + &laquo;-link&raquo;).style.display = &laquo;none&raquo;;<br />
document.getElementById(title).style.display = &laquo;block&raquo;;<br />
}<br />
&lt;/script&gt;</p></blockquote>
<p>Эта функция позволяет сократить HTML-код (иначе бы пришлось все это писать в ставках вроде onclick). Добавьте ее, например, в файл header.php (если работаете с WordPress) или в другой файл шаблона. Можно непосредственно перед использованием.</p>
<p>Дальше. Заключаем то, что нужно скрыть, в блок div с такими параметрами: &lt;div id=&raquo;more1&#8243; style=&raquo;display: none;&raquo;&gt;</p>
<p>Тут нужно обратить внимание на id (его будем передавать той функции) и на стиль, скрывающий div по умолчанию.</p>
<p>Теперь ссылка, чтобы этот див показывался. Понятно, что ссылка может быть где угодно, хотя логичнее всего на месте этого дива (над или под ним). Ссылка такого вида: &lt;a href=&raquo;javascript: void(0);&raquo; id=&#8217;more1-link&#8217; onclick=&raquo;showblock(&#8216;more1&#8242;);&raquo;&gt;&#8230;еще&lt;/a&gt;</p>
<p>Обращаем внимание вот на что: такой href нужен, чтобы при клике не срабатывала прокрутка экрана (если поставить символ #, как обычно, то прокрутка сработает &#8211; это  не удобно). id задан не случайно: он состоит из id дива выше (more1) и приписки -link. Это нужно, чтобы наша функция могла отличать &#8211; ссылка это или сам div. По событию onclick вызывается наша функция, в которую передается имя дива &#8216;more1&#8242; (функция делает видимым div с id ранвым переданному и скрывает ссылку с id равным переданному плюс &#8216;-link&#8217;).</p>
<p>Чтобы было понятнее, можете посмотреть исходник моего сайта. Или вот Вам маленький пример:</p>
<blockquote><p>&lt;a href=&raquo;javascript: void(0);&raquo; id=&#8217;aaa-link&#8217; onclick=&raquo;showblock(&#8216;more1&#8242;);&raquo;&gt;показать&lt;/a&gt;<br />
&lt;div id=&raquo;aaa&raquo; style=&raquo;display: none;&raquo;&gt;<br />
Код, который нужно скрыть.<br />
&lt;/div&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/prikolnyie-skryivayuschiesya-otkryivayuschiesya-bloki.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>

