<?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>Уроки PHP, Mootools, JavaScript, ActionScript, HTML, CSS &#187; proglammer</title>
	<atom:link href="http://php.infoniac.ru/archives/author/admin/feed" rel="self" type="application/rss+xml" />
	<link>http://php.infoniac.ru</link>
	<description>Уроки программирования от новичка новичкам</description>
	<lastBuildDate>Thu, 09 Sep 2010 18:22:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Слайдеры &#8211; Урок 14 &#8211; Уроки Mootools</title>
		<link>http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html</link>
		<comments>http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html#comments</comments>
		<pubDate>Tue, 07 Sep 2010 11:10:32 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[объекты mootools]]></category>
		<category><![CDATA[слайдер]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=670</guid>
		<description><![CDATA[Введение в слайдеры Если вы прочитали предыдущие уроки Mootools, то Вам должны быть уже более или менее понятны большинство объектов библиотеки Mootools. Объект Slider особо ничем не отличается от других: создаете новый слайдер (new Slider), определяете элементы слайдера и ручки, определяете параметры и создаете несколько функций для функций обратного вызова и, в принципе, всё. Но, [...]]]></description>
			<content:encoded><![CDATA[<h2>Введение в слайдеры</h2>
<p>Если вы прочитали предыдущие <a href="category уроки Mootools">уроки Mootools</a>, то Вам должны быть уже более или менее понятны большинство объектов библиотеки Mootools. Объект Slider особо ничем не отличается от других: создаете новый слайдер (new Slider), определяете элементы слайдера и ручки, определяете параметры и создаете несколько функций для функций обратного вызова и, в принципе, всё. Но, несмотря на то, что объект Slider и создается примерно по такому шаблону, есть несколько  вещей, которые обязательно нужно нам пройти.</p>
<h2>Основы</h2>
<h3>Создание нового объекта Slider</h3>
<p>Давайте сразу начнем с кода HTML и CSS. Основным тут является со  здание длинного, прямоугольного блока div (насколько длинный, зависит от того, для чего слайдер будет использоваться) и его дочернего элемента div, который будет служить &laquo;захватом&raquo; слайдера.</p>


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">&lt;!--Вертикальный слайдер--&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;slider&quot;</span>&gt;</span>
   <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;knob&quot;</span>&gt;</span><span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>



<p>А код CSS будет выглядеть немного позамысловатее: </p>


<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*Общий стиль для всего слайдера*/</span>
<span style="color: #cc00cc;">#slider</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">/*Я использовал заранее подготовленные рисунки
    сделанные в великом и могучем Фотошопе*/</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'images/slider_body_h.png'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-repeat</span><span style="color: #3333ff;">:repeat-</span>x<span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">150px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #808080; font-style: italic;">/*Стиль &quot;захвата&quot;-ползунка*/</span>
<span style="color: #cc00cc;">#knob</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">z-index</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">100</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'images/knob-20.png'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-repeat</span><span style="color: #3333ff;">:no-</span>repeat<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>



<p>Теперь можно смело создавать новый объект Slider, для чего вначале создаем переменные с элементами и потом создаем новый (&laquo;<strong>new</strong>&laquo;) объект slider, также, как мы это делали с объектами <strong>tween</strong>, <strong>drag.move</strong> и <strong>morph</strong>:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//создаем переменные для наших блоков</span>
<span style="color: #003366; font-weight: bold;">var</span> sliderObject <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slider'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> knobObject <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'knob'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 
<span style="color: #006600; font-style: italic;">//создаем новый объект slider</span>
<span style="color: #006600; font-style: italic;">//но вначале, определяем элементы слайдера</span>
<span style="color: #006600; font-style: italic;">//а потом определяем объект захвата</span>
<span style="color: #003366; font-weight: bold;">var</span> SliderObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Slider<span style="color: #009900;">&#40;</span>sliderObject <span style="color: #339933;">,</span> knobObject <span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//а вот и параметры</span>
    <span style="color: #006600; font-style: italic;">//ниже каждый из них рассматривается более подробно</span>
    range<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
    snap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    steps<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
    offset<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
    wheel<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    mode<span style="color: #339933;">:</span> <span style="color: #3366CC;">'horizontal'</span><span style="color: #339933;">,</span>
    <span style="color: #006600; font-style: italic;">//событие onchange запускается тогда, когда значение параметра step изменится</span>
    <span style="color: #006600; font-style: italic;">//и передаст текущее значение этому параметру</span>
    onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//сюда вставляем код того, что должно произойти по событию onchange</span>
        <span style="color: #006600; font-style: italic;">//можно ссылаться на параметр step</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #006600; font-style: italic;">//событие onTick передвигается, когда пользователь передвигает захват </span>
    <span style="color: #006600; font-style: italic;">//и передаст текущее положение (относительно родительского элемента)</span>
    onTick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//это необходимо для того, чтобы захват настроился</span>
        <span style="color: #006600; font-style: italic;">//ниже остановимся на этом вопросе более подробно</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">knob</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'left'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #006600; font-style: italic;">//срабатывает, когда ползунок останавливается</span>
    <span style="color: #006600; font-style: italic;">//и пользователь &quot;отпускает&quot; его</span>
    onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//сюда вставляем код того, что должно произойти по событию onComplete</span>
        <span style="color: #006600; font-style: italic;">//можно ссылаться на параметр step</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Немного грубовато все получилось, но, надеюсь, далее все прояснится.</p>
<h3>Параметры объекта Slider</h3>
<ul>
<li><strong>snap</strong> &#8211; захват (по умолчанию &#8211; <em>false</em>): булев тип (думаю, все знают, что это такое). Определяет то, будет ли бегунок закрепляться за шагами по мере передвижения по слайдеру (тут немного запутано, но попробую объяснить этот пункт немного дальше).</li>
<li><strong>offset</strong> &#8211; сбвиг (по умолчанию &#8211; <em>0</em>): относительный сдвиг захвата от первоначального положения. С этим параметром нужно поэкспериментировать, чтобы понять его назначение <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</li>
<li><strong>range</strong> &#8211; диапазон (по умолчанию &#8211; <em>false</em>): Очень полезный параметр. Можно назначить диапазон значений, на которые будут разбиваться шаги (параметр steps). Например, если был указан диапазон [0, 200], а параметр steps (шаги) имеет значение 10, то расстояние между шагами будет равно 20. Диапазон может также включать в себя отрицательные числа, например [-10, 0], что оказывается очень полезным при инвертировании скроллера (дальше больше&copy; <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</li>
<li><strong>wheel</strong> (по умолчанию &#8211; <em>false</em>): если установить параметр на true, то объект будет распознавать движения колеса мышки. При исползовании колёсика мышки, возможно нужно будет скорректировать диапазон, чтобы убедиться в том, что событие <em>mousewheel</em> не будет инвертировано (и снова дальше больше&copy;).</li>
<li><strong>steps</strong> &#8211; шаги (по умолчанию &#8211; <em>100</em>): Значение в 100 шагов очень удобно, так как его можно использовать как процентное соотношение. Однако, можно назначить столько, шагов, сколько душе угодно (в разумных пределах, конечно).</li>
<li><strong>mode</strong> &#8211; режим (по умолчанию &#8211; &#8216;horizontal&#8217; &#8211; горизонтально): Режим определяет будет ли слайдер вертикальным или горизонтальным. Хотя, для того, чтобы сделать слайдер вертикальным или горизонтальным, нужно будет проделать еще несколько шагов.</li></ul>
<h3>Функции по событиям</h3>
<ul><li><strong>onChange</strong>: это событие запускается, когда текущий шаг изменяет свое значение. Передает новое значение параметра &laquo;step&raquo;.</li>
<li><strong>onTick</strong>: срабатывает, когда измеяется положение бегунка. Передает новое значение параметра &laquo;position&raquo;.</li>
<li><strong>onComplete</strong>: запускается, когда пользователь отпускает бегунок. Передает новое значение параметра &laquo;step&raquo;.</li></ul>
<p>Для лучшего понимания за что отвечает каждое событие и когда каждое из них изменяется, смотрите на пример ниже.</p>
<h2>И самое вкусное &#8211; пример</h2>
<p>Итак, давайте создадим, наконец, свой слайдер, который расставит все новые знания по полочкам.</p>
<h3>.set();</h3>
<p>Посмотрев на событие на элементе <strong>button</strong> и мы увидим метод <strong>.set()</strong> в действии. Он очень прост в использовании: просто вызываем слайдер, добавляем к нему метод .set() и шаг, с которым мы будем двигать бегунок.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> SliderObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Slider<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slider-h'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'knob-h'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    	<span style="color: #006600; font-style: italic;">//параметры</span>
		range<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		snap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
		steps<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
		offset<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
		wheel<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		mode<span style="color: #339933;">:</span> <span style="color: #3366CC;">'horizontal'</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//функции для ползунковых событий</span>
	    onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'change'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'steps_number'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> step<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    	onTick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tick'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'knob_pos'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #006600; font-style: italic;">//эта строчка очень нужна (при горизонтальном режиме изменяется параметр left)</span>
        	<span style="color: #006600; font-style: italic;">//она заменяет значение соответствующего параметра</span>
	        <span style="color: #006600; font-style: italic;">//на значение текущего места &quot;сброса&quot; ползунка пользователем</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">knob</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'left'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    	<span style="color: #006600; font-style: italic;">//функиция, запускаемая при завершении перетаскивания ползунка</span>
	    onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'complete'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'steps_complete_number'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> step<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//вертикальный слайдер</span>
	<span style="color: #003366; font-weight: bold;">var</span> SliderObjectV <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Slider<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slider-v'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'knob-v'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
		range<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		snap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		steps<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
		offset<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
		wheel<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		mode<span style="color: #339933;">:</span> <span style="color: #3366CC;">'vertical'</span><span style="color: #339933;">,</span>
    	onTick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #006600; font-style: italic;">//эта строчка очень нужна (при горизонтальном режиме изменяется параметр top)</span>
    	    <span style="color: #006600; font-style: italic;">//она заменяет значение соответствующего параметра</span>
        	<span style="color: #006600; font-style: italic;">//на значение текущего места &quot;сброса&quot; ползунка пользователем</span>
	        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">knob</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'top'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stepsV_number'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> step<span style="color: #339933;">*-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 	<span style="color: #006600; font-style: italic;">//устанавливает начальную точку вертикального слайдера на 0 (ноль)</span>
	<span style="color: #006600; font-style: italic;">//иначе, начальной точкой была бы верхняя точка слайдера</span>
	SliderObjectV.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//устанавливает шаг слайдера на 7</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'set_knob'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> SliderObject.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">7</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>




<div id="slider_wrap">
	<div id="change" class="indicator">
		<strong>onChange</strong><br />
        передаёт шаг, на котором Вы находитесь: <span id="steps_number"></span>
	</div>
	<div id="tick" class="indicator">
		<strong>onTick</strong><br />
		передаёт положение ползунка: <span id="knob_pos"></span>
    </div>
	<div id="complete" class="indicator">
    	<strong>onComplete</strong><br />
        передаёт текущий шаг: <span id="steps_complete_number"></span>
    </div>
	<div id="slider-h">
		<div id="knob-h">&nbsp;</div>
	</div><br />
	<button id="set_knob">Установить ползунок на 7-й шаг</button><br />
	<div id="slider-v">
		<div id="knob-v">&nbsp;</div>
	</div>
    <span id="stepsV_number"></span>
</div>



</p><p>Обратите внимание на пример с вертикальным слайдером: мы не только изменяем параметр &laquo;<em>mode</em>&raquo; (режим) на &laquo;<em>vertical</em>&raquo; (вертикальный), но мы также используем свойство стиля &laquo;<em>top</em>&raquo; вместо &laquo;<em>left</em>&raquo; в событии onTick, и передаем ему новое значение с помощью функции <strong>.setStyle()</strong>. Далее, при отображении числа для события onChange, мы умножаем его на -1 (минус один), что делает из отрицательного числа, положительное (если кто помнит базовую математику <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). Это позволяет сделать две вещи: первое &#8211; заменить 10 на 0, где 0 &#8211; нижняя точка слайдера. Практически такого же результата, в принципе, можно добиться и установив параметр &laquo;range&raquo; на [10,0], но, при этом, колесо мышки будет работать наоборот. И это подводит нас ко второй вещи: только так можно заставить скрипт правильно понимать движение колеса мышки, ведь оно получает значения, а не слова (&laquo;vertical/horizontal&raquo;), а если пропустить первую &laquo;вещь&raquo; (с умножением на -1), то колесо прокрутки становится инвертированным. А проделав такой незамысловатый трюк, можно добиться правильного движения колеса прокрутки И получить правильные значения, где 0 (ноль) &#8211; минимальное значение, находящееся внизу.</p>
<p>К сожалению, не я это все придумал, а программист сайта ConsiderOpen.com, потому тут еще следует заметить, что этот трюк с умножением на -1 &#8211; это решение одного человека. Если Вам известен путь сделать тоже самое, но меньшими усилиями, все будут рады, если Вы этим поделитесь!</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ваш опыт нужен тысячам!</title>
		<link>http://php.infoniac.ru/katalog-statei-po-web-programmirovaniju.html</link>
		<comments>http://php.infoniac.ru/katalog-statei-po-web-programmirovaniju.html#comments</comments>
		<pubDate>Fri, 27 Aug 2010 07:13:11 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Оптимизация]]></category>
		<category><![CDATA[Поисковые системы]]></category>
		<category><![CDATA[Работа с сайтом]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[акция]]></category>
		<category><![CDATA[веб-программирование]]></category>
		<category><![CDATA[опыт]]></category>
		<category><![CDATA[размещение статей]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=643</guid>
		<description><![CDATA[Объявляется преобразование моего блога в белый каталог статей на тему веб-программирования для новочков! Если вы хотите разметисть у меня на блоге свою статью на тему веб-программирования и что бы в статей было упоминание Вашего сайте, читайте дальше!]]></description>
			<content:encoded><![CDATA[<p>Уважаемые читатели!<br />
Веб-программированию многие, как я, пытаются научиться на дому, т.е. не ходят на курсы, не учатся в ВУЗах или же просто ищут в интернете интересные задачи на тему программирования.</p>
<p>Судя по некоторым отзывам, мои <a href="http://php.infoniac.ru/category/mootools">уроки по Mootools</a> очень помогают другим новичкам в плане Mootools. Но у меня, к сожалению, не так много интересных задач, которые я мог бы выложить в блог для рассмотрения и помощи другим новичкам, таким как я. Потому, хочу объявить о небольшой акции:</p>
<blockquote style="font-weight:bold;"><p>Если Вы также, как и я, учитесь программированию и у вас есть интересные задачи, темы, уроки? которыми вы готовы поделиться, пожалуйста, присылайте Ваши материалы мне на php &#8211; собака &#8211; инфониак.ru (думаю, разберете, как правильно адрес пишется) или просто через <a href="http://php.infoniac.ru/contact-proglammer.html">мою горячую линию</a>.</p></blockquote>
<p>Понятное дело, никто просто так не будет делиться своим опытом, но и понятное дело, что я не просто так предлагаю размещать Ваш опыт у Себя в блоге. Итак, если соберетесь прислать мне свой материал, пожалуйста, убедитесь в том, что:</p>
<ol>
<li>материал написан на тему веб-программирования, поисковых систем, верстки сайтов, дизайна веб-страниц и вообще интернете. Не допускаются темы заработка в интернете и всего такого. Если я посчитаю, что материал не будет интересен мои читателям, я:</li>
</ol>
<div style="margin-left:25px;">- отредактирую материал, если это поможет ему получить оттенок допустимой тематики;<br />
- отклоню материал с отпиской автору о причине сего.</div>
<ol start="2">
<li>материал уникален;</li>
<li>опрятно написан, без ошибок и опечаток (не так как у меня <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  );</li>
<li>состоит не менее чем из 300 слов, связанных между собой смыслом (см. пункт выше);</li>
<li>он уникален (см. пункт 2), если вы просто хотите перепостить материал уже размещенный на вашем сайте;</li>
<li>что в статье не просто теория, но и практические примеры (но и просто теория &#8211; не плохо, присылайте рассмотрим&#8230; я бы и сам попробовал придумать и прикрутить примеры);</li>
<li>если еще что-нибудь придумаю, обновлю <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</li>
</ol>
<p>С моей стороны вы получите в этом материале ссылку на Ваш блог и благодарности всех читателей за еще один хороший урок с примером <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/katalog-statei-po-web-programmirovaniju.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Уроки Mootools – Регулярные выражения – Урок 13</title>
		<link>http://php.infoniac.ru/regulyarnye-vyrazheniya-urok-13.html</link>
		<comments>http://php.infoniac.ru/regulyarnye-vyrazheniya-urok-13.html#comments</comments>
		<pubDate>Sun, 11 Jul 2010 05:22:15 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[contains]]></category>
		<category><![CDATA[escapeRegExp]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[поиск по регулярным выражениям]]></category>
		<category><![CDATA[регулярные выражения]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=596</guid>
		<description><![CDATA[Очень и очень трудно мне далось написание этого урока. Регулярные выражения вообще не самое простое, что есть в программировании, а уж для меня, так тем более. Например, пока я писал его, познакомился с функцией escapeRegExp(), которую хотел применить при доработке под свои нужды класса Mootools для поиска и подсветки текста на странице (аналог обычного поиска [...]]]></description>
			<content:encoded><![CDATA[<p>Очень и очень трудно мне далось написание этого урока. Регулярные выражения вообще не самое простое, что есть в программировании, а уж для меня, так тем более. Например, пока я писал его, познакомился с функцией <strong>escapeRegExp()</strong>, которую хотел применить при доработке под свои нужды <a href="http://davidwalsh.name/mootools-highlighter-search" rel="nofollow">класса Mootools для поиска и подсветки текста на странице</a> (аналог обычного поиска в Firefox и некоторых других браузерах, но не все ж умеют пользоваться встроенным поиском браузера…). Так вот там у меня ничего не получилось. Дебаггер ФФ всё твердил, что «escapeRegExp() is not a function» (не является функцией). Я так и не понял, что я делал не правильно. А здесь все получилось (<a href="#escape">в самом конце урока</a>).</p>
<p><span id="more-596"></span></p>
<h2>Основы</h2>
<h3>test()</h3>
<p>В своем самом простом выражении, регулярное выражение – это простой текст, который нужно найти в документе. Несмотря на то, что JavaScript уже имеет встроенный объект RegExp, который отвечает за формирование регулярных выражений, со своей собственной функцией <strong>test()</strong>, но функция test() в Mootools является более дружелюбной её версией, чем яваскриптовская.</p>
<p>Для начала, посмотрим на самый простой пример использования функции <strong>test()</strong>, в котором будем искать определенный текст, в более объемном тексте.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Текст или строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"Найти что-нибудь здесь"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Регулярное выражение, которое будем использовать для поиска</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regular_expression <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"здесь"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//применяем функцию test(), которая возвращает true или false</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> result <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regular_expression<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//переменная result имеет значение true</span></pre>
</div>
</div>
<p>По сути, это такой же результат, если бы использовалась функция <strong>contains()</strong>. Однако, в то время, как <strong>contains()</strong> ищет целые слова, <strong>test()</strong> находит вхождения сочетания символов:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_match <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"слово"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт false</span>
string_to_match.<span style="color: rgb(102, 0, 102);">contains</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'лов'</span><span style="color: rgb(0, 153, 0);">)</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт true</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'лов'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>И ещё обращу внимание на то, что регулярное выражение не будет чувствительным к регистру, если этого явно не указать с помощью специального ключа. Потому, поиск по регулярному выражению «слово», в слове «Слово» вернёт false. Пример:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем функцию обработки</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo_1 <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем исходный текст</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_string <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_value'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем регулярное выражение</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_value <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_match'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//производим поиск в исходном тексте</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_result <span style="color: rgb(51, 153, 51);">=</span> test_string.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regex_value<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//сообщаем пользователю о текущем положении дел</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>test_result<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Есть совпадение!"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Нет совпадения"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<p>Обращаю внимание на то, что есть некоторые символы, использовать которые нужно очень осторожно. Если использовать один из нижеуказанных символов в примере ниже, это может привести к непредвиденной ошибке и потому, нужно будет перезагрузить страницу, чтобы все примеры страницы работали.</p>
<p>-  .  *  +  ?  ^  $  {  }  (  )  |  [  ]  /  \ </p>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Текст, в котором производим поиск:</td>
<td>
<input id="regex_1_value" size="25" value="Ищем совпадения в этом тексте"/></td>
</tr>
<tr>
<td>Регулярное выражение:</td>
<td>
<input id="regex_1_match" size="25" value="тексте"/></td>
</tr>
<tr>
<td><button id="regex_1_button">Запуск теста</button></td>
<td>
<div id="regex_1_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h2>Игнорируем регистр</h2>
<p>Существует масса ситуаций, когда нет необходимости, чтобы регулярное выражение было чувствительным к регистру текста. Для того, чтобы это уточнить для функций, работающих с регулярными выражениями, нужно использовать параметр «i», как это указано в следующем примере.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем производить поиск</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"ИгнОр РЕгИстрУ"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт false</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"игнор"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт true</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"игнор"</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"i"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Функции <strong>test()</strong> можно передать несколько параметров, но, так как JavaScript поддерживает только 3 параметра регулярного выражения (2 из которых включены по умолчанию в функции <strong>test()</strong>), параметр «i», вероятно, единственный, который нужно будет передавать. Ниже, в форме, можете протестировать функцию <strong>test()</strong> с параметром игнорирования регистра.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получить строку для тестирования из поля input</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_string <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_value'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получить регулярное выражение из поля input</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_value <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_match'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверить, требуется ли игнорирование регистра</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">""</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_param'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">checked</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
		regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"i"</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Произвести поиск и получить результат</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_result <span style="color: rgb(51, 153, 51);">=</span> test_string.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regex_value<span style="color: rgb(51, 153, 51);">,</span> regex_param<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Обновить приготовленный контейнер для сообщения результатов поиска</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>test_result<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
       	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Есть находка! <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> "</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>
       	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Ничего нет! <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> "</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Строка, в которой будем искать:</td>
<td>
<input id="regex_2_value" value="ИгнОр РЕгИстрУ" type="text"/></td>
</tr>
<tr>
<td>Определим регулярное выражение:</td>
<td>
<input id="regex_2_match" value="игнор" type="text"/></td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_2_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_2_button">Запуск теста</button></td>
<td>
<div id="regex_2_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h2>Интересная часть</h2>
<p>Итак, мы уже просмотрели примеры простого поиска по регулярным выражениям, можно начать смотреть в сторону более сложных выражений. Охватить всю функциональность и возможности регулярных выражений сейчас не получится (да я и не претендую на это), но ознакомиться то «самое, самое», что можно будет использовать в своих простых приложениях, у нас получится. Даже этого должно будет хватить для решения простых задач (меня регуляри не раз спасали – некоторые до сих пор использую в DreamWeaver-е).</p>
<h3>Находим начало строки с помощью оператора «^»</h3>
<p>Оператор «^» при использовании в регулярных выражениях, помогает найти текст в начале строки, вне зависимости от того, существует ли этот текст далее в строке поиска. Установите оператор в начале строки для поиска, вот так:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем производить поиск</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"поищем в начале текста"</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//тестирует верхний текст на предмет того, начинается ли он с данной строки</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает true</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^поищем"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Далее, если выражение не находится в начале текста, этот поиск<br />
вернет, соотвественно, false:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем производить поиск</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"поищем в начале текста"</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//тестирует верхний текст на предмет того, начинается ли он с данной строки</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает (удивление) false</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^начал"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Эти два примера можно и протестировать здесь:</p>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Строка, в которой будем искать:</td>
<td>
<input id="regex_3_value" size="30" value="будем проверять только начало" type="text"/></td>
</tr>
<tr>
<td>Регулярное выражение:</td>
<td>
<input id="regex_3_match" value="^будем" type="text"/></td>
</tr>
<tr>
<td>Регистру игнор?</td>
<td>
<input id="regex_3_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_3_button">Пуск…</button></td>
<td>
<div id="regex_3_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h3>Поиск по концам с помощью оператора «$»</h3>
<p>Этот оператор работает также, как и предыдущий («^»), только с двумя исключениями:</p>
<ol>
<li>Поиск только по концу строк</li>
<li>Устанавливается в конце регулярного выражения</li>
</ol>
<p>В остальном, регЭкспы с этим оператором работают как и ожидается <img src="13_files/icon_smile.gif" alt=":)" class="wp-smiley"/>   :</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"поиск по концам строк"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//проверяет, заканчивается ли строка на слово "строк"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и возвращает "true"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"строка$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//проверяет, заканчивается ли строка на слово "металлика"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и вовращает "false"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_false <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"металлика$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Используя оба этих оператора, можно протестировать исходный текст на полное совпадение с регулярным выражением:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Исходная строка</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"проверим на полное совпадение"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяет на полное совпадение со строкой "проверим на полное совпадение"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает true</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^проверим на полное совпадение$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяет на полное совпадение со строкой "проверим на полное совпадение"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает false</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_false <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^проверим на совпадение$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Исходная строка:</td>
<td>
<input id="regex_4_value" value="проверим на полное соответствие" size="30" type="text"/></td>
</tr>
<tr>
<td>Регулярное выражение:</td>
<td>
<input id="regex_4_match" value="^проверим на полное соответствие$" size="30" type="text"/></td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_4_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_4_button">Запуск теста…</button></td>
<td>
<div id="regex_4_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h3>Классы символов</h3>
<p>Классы символов – это ещё один инструмент регулярных выражений (жутко полезный, нужно заметить), позволяющий производить поиск нескольких определенных символов («А» или «Я», «f» или «r») или символов из определенного диапазона (от «A» до «Z» или от «r» до «z»). Если, например, есть необходимость проверить строку на наличие слов «бее» или «мее», мы заключаем две первые буквы этих слов в [квадратные] скобки, таким образом формируя класс символов и использовать следующее регулярное выражение:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать слово "мее"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> first_string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"овцы разговаривают словом мее"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать слово "бее"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> second_string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"козы разговаривают словом бее"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//это выражение найдет совпадение в первой строке, но не во второй</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> returns_true <span style="color: rgb(51, 153, 51);">=</span> first_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"мее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> returns_false <span style="color: rgb(51, 153, 51);">=</span> second_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"мее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//следующее найдет совпадение во второй строке, но не в первой</span>
returns_false <span style="color: rgb(51, 153, 51);">=</span> first_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"бее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
returns_true <span style="color: rgb(51, 153, 51);">=</span> second_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"бее"</span><span style="color: rgb(0, 153, 0);">)</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//следующее найдет совпадение в обеих строках</span>
returns_true <span style="color: rgb(51, 153, 51);">=</span> first_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[мб]ее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
returns_true <span style="color: rgb(51, 153, 51);">=</span> second_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[мб]ее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Первая строка, в которой будем искать:</td>
<td>
<input id="regex_5_value_1" size="30" value="овцы разговаривают словами мее" type="text"/></td>
<td>
<div id="regex_5_result_1">&nbsp;</div>
</td>
</tr>
<tr>
<td>Вторая строка, в которой будем искать:</td>
<td>
<input id="regex_5_value_2" size="30" value="козы разговаривают словами бее" type="text"/></td>
<td>
<div id="regex_5_result_2">&nbsp;</div>
</td>
</tr>
<tr>
<td>РегЭксп:</td>
<td>
<input id="regex_5_match" value="[мб]ее" type="text"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_5_param" type="checkbox"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><button id="regex_5_button">Пуск…</button></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
<p>Для того, чтобы использовать диапазон символов для поиска, нужно лишь указать начальную и окончательную точку диапазона, разделив их дефисом («-»). Так можно определять диапазоны как цифр, так и букв, причем необязательно ограничиваться латинскими: кириллические символы также хорошо понимаются движком регулярных выражений, как и латинские. Хотя, стоит оговориться, что букву «ё» движок регулярных выражений не понимает, хотя, возможно я чего-то не знаю (буду благодарен, если кто-нибудь ткнет меня носом в проблему <img src="13_files/icon_smile.gif" alt=":)" class="wp-smiley"/>  ) .</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">" b, д или 3"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//поиск символов a, b, c, или d. Вернёт true.</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[a-d]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//поиск по символам г, д, е, ж или з. Вернёт true.</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//Обратите внимание, "ё" в списке нет. "ё" не находится. Почему, пока не знаю...</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[г-з]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//поиск 1, 2, 3, 4 или 5. Вернёт true.</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[1-5]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Если необходимо искать несколько классов символов, нужно будет заключить такие классы в свои собственные [квадратные] скобки и разделить их логическим оператором «|» (OR – или). Таким образом, у нас появляется регулярное выражение с использованием вложенных квадратных скобок.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"b, д или 3"</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//Вернёт true, так как все три выражения верны.</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[a-d] | [г-з] | [1-5]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Вот пример, в котором можно немного поиграться с полями: воодите туда любой текст, кликайте по соответствующим кнопка регЭкспа и следите за тем, что возвращает true, а что false. «Да прибудет с тобой сила!» <img src="13_files/icon_smile.gif" alt=":)" class="wp-smiley"/> </p>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Первая строка, в которой будем искать:</td>
<td>
<input id="regex_6_value_1" size="30" value="b" type="text"/></td>
<td>
<div id="regex_6_result_1">&nbsp;</div>
</td>
</tr>
<tr>
<td>Вторая строка, в которой будем искать:</td>
<td>
<input id="regex_6_value_2" size="30" value="3" type="text"/></td>
<td>
<div id="regex_6_result_2">&nbsp;</div>
</td>
</tr>
<tr>
<td>Третья строка, в которой будем искать:</td>
<td>
<input id="regex_6_value_3" size="30" value="д" type="text"/></td>
<td>
<div id="regex_6_result_3">&nbsp;</div>
</td>
</tr>
<tr>
<td>РегЭксп:</td>
<td>
<input id="regex_6_match" value="[a-d]" type="text"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_6_param" type="checkbox"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><button id="regex_6_button">Поехали…</button></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3">
<form id="searchWhat_6" action="">
<input value="[a-d]" name="regexp_demo_6" id="eng" type="radio"/><label for="eng">[a-d]</label>&nbsp;</p>
<input value="[г-з]" name="regexp_demo_6" id="rus" type="radio"/><label for="rus">[г-з]</label>&nbsp;</p>
<input value="[1-5]" name="regexp_demo_6" id="num" type="radio"/><label for="num">[1-5]</label>&nbsp;</p>
<input value="[a-d]|[г-з]|[1-5]" name="regexp_demo_6"  id="searchAll" type="radio"/><label for="searchAll">[a-d]|[г-з]|[1-5]</label><br />
      </form>
</td>
</tr>
</tbody>
</table>
<h3><a name="escape"></a> escapeRegExp()</h3>
<p>Если ты, о читатель моего поста про регулярные выражения, дочитал до сего момента, и о тебе можно сказать, что ты человек с логическим типом мышления, то ты наверняка заметил, использование многочиленных специальных символов в определении регулярного выражения, например классов символов или его логики (ИЛИ – «<strong>|</strong>«, в начале строки – «<strong>^</strong>«, в конце строки – «<strong>$</strong>» и т.д.). Ты ведь наверняка уже понял, что все эти символы сильно затрудняют поиск самих специальных символов в определенной строке… На первый взгляд. А на второй взгляд, все что нужно сделать, это экранировать специальные символы другим специальным символом – обратный слэш «<strong>\</strong>«, а если нужно искать сам обратный слэш, то используются два обратных слэша «<strong>\\</strong>«. Логика проста, если не думатьо ней <img src="13_files/icon_smile.gif" alt=":)" class="wp-smiley"/> !</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка для поиска. Обратите внимание на специальные символы [ ] - и $</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_match <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"[всякий-разный-текст] или $300"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Было бы неправильно составить такое регулярное выражение</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//потому что движок будет их воспринимать, как специальные символы</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//а нам этого не нужно</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[всякий-разный-текст]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"$300"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Правильно было бы так:</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание на обратный слэш \ перед символами [ ] - и $</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"<span style="color: rgb(0, 0, 153); font-weight: bold;">\[</span>stuff<span style="color: rgb(0, 0, 153); font-weight: bold;">\-</span>in<span style="color: rgb(0, 0, 153); font-weight: bold;">\-</span>here<span style="color: rgb(0, 0, 153); font-weight: bold;">\]</span>"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"<span style="color: rgb(0, 0, 153); font-weight: bold;">\$</span>300"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Когда регулярное выражение не большое, не составит особого труда экранировать каждый спец. символ. Но с другой стороны никто не отменял банальной человеческой невнимательности (которая у меня, например, хроническая), и такой специальный символ можно просто упустить из виду, или же, на стадиях своего обучения, можно и не подозревать, что ты пропустил специальный символ, не экранировал его и регЭксп не дает нужного результата. На всякий случай, если запомните сразу, вот специальные, рабочие символы регулярных выражений, которые <strong>НУЖНО</strong> экранировать:</p>
<p style="text-align: center;">- . * + ? ^ $ { } ( ) | [ ] / \</p>
<p>К счастью, Mootools – это не та библиотека, которая позволит своему пользователю бездарно убивать время на экранирование каждого рабочего символа, когда есть такая функция, как <strong>escapeRegExp()</strong>, чья работа – это избавить тебя, о начинающий программист, от экранирования специальных символов в регулярном выражении. Эта функция работает с любой строкой, потому ее можно использовать всегда, когда нужно произвести поиск какого-либо текста.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Нужно экранировать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> unescaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"[текст-регулярного-выражения]"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Экранируем строку</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> escaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> unescaped_regex_string.<span style="color: rgb(102, 0, 102);">escapeRegExp</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//escaped_regex_string стала такой: "\[текст\-регулярного\-выражения\]"</span></pre>
</div>
</div>
<p>Обратите внимание, что это значит, что любой специальный символ, который нужно использовать в регулярном выражении, нужно добавить к регулярному выражению после использования функции <strong>escapeRegExp()</strong>:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, которую нужно экранировать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> unescaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"[текст-регулярного-выражения]"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Экранировать строку, для поиска по началу строки</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> escaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"^"</span> <span style="color: rgb(51, 153, 51);">+</span> unescaped_regex_string.<span style="color: rgb(102, 0, 102);">escapeRegExp</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//переменная escaped_regex_string стала такой:  "^\[текст\-регулярного\-выражения\]"</span></pre>
</div>
</div>
<p>Ниже представлен пример, в котором видна разница между использованием и неиспользованием функции escapeRegExp():</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получаем строку для проверки</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_string <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_value'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получаем регулярное выражение</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_value <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_match'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяем, нужно ли экранировать текст</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_escape'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">checked</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">//Если да, применяем соотв. функцию</span>
		regex_value <span style="color: rgb(51, 153, 51);">=</span> regex_value.<span style="color: rgb(102, 0, 102);">escapeRegExp</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Определяем параметры регулярного выражения</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">""</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяет, нужно ли игнорировать регистр</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_param'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">checked</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
		regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"i"</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Запуск теста</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_result <span style="color: rgb(51, 153, 51);">=</span> test_string_1.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regex_value<span style="color: rgb(51, 153, 51);">,</span> regex_param<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span>      <span style="color: rgb(0, 153, 0);">(</span>test_result<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Есть совпадения"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Нет совпадений!"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<table>
<tbody>
<tr>
<td>Строка, в которой будем производить поиск:</td>
<td>
<input id="regex_7_value" value="[слово] или $400" type="text"/></td>
</tr>
<tr>
<td>Регялурное выражение: </td>
<td>
<input id="regex_7_match" value="$400" type="text"/></td>
</tr>
<tr>
<td>использовать escapeRegExp():</td>
<td>
<input id="regex_7_escape" type="checkbox"/></td>
</tr>
<tr>
<td>Игнор регистру:</td>
<td>
<input id="regex_7_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_7_button">Запуск теста…</button></td>
<td>
<div id="regex_7_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<p>Помните, что все примеры можно «сломать», если использовать неэкранированные специальные символы. Потому, если вдруг случается, что что-то перестало работать, после того, как только что это работало – не удивляйтесь, а просто перезагрузите страницу <img src="13_files/icon_wink.gif" alt=";)" class="wp-smiley"/> .</p>
<p>Если все пойдет по плану, то у меня на готовке еще несколь интересных материалов и уроков, потому не забудьте <a href="http://feeds.feedburner.com/Beginners-Programming-Training">подписаться на мою RSS ленту</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/regulyarnye-vyrazheniya-urok-13.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Maps послал американку под колёса</title>
		<link>http://php.infoniac.ru/google-poslal-amerikanku-pod-kolesa.html</link>
		<comments>http://php.infoniac.ru/google-poslal-amerikanku-pod-kolesa.html#comments</comments>
		<pubDate>Tue, 01 Jun 2010 06:14:44 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[googe]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[карты googe]]></category>
		<category><![CDATA[курьёзы]]></category>
		<category><![CDATA[суд]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=631</guid>
		<description><![CDATA[Прочитал интересную новость о том, как Google Maps послал пешехода под колеса. Вкратце: жительница США воспользовалась подсказками сервиса Google Maps, который проложил ее маршрут для пешехода через совсем не пешую часть скоростного шоссе. Ну и конечно же, как и полагается в Соединенных Штатах, подала в суд на Google. Мои мысли по этому поводу таковы: «ТЫ [...]]]></description>
			<content:encoded><![CDATA[<p>Прочитал интересную новость о том, как <a href="http://blog.bloggers.su/news/google-maps-poslal/">Google Maps  послал пешехода под колеса</a>. Вкратце: жительница США воспользовалась  подсказками сервиса Google Maps, который проложил ее маршрут для  пешехода через совсем не пешую часть скоростного шоссе. Ну и конечно же,  как и полагается в Соединенных Штатах, подала в суд на Google.</p>
<p><span id="more-631"></span>Мои мысли по этому поводу таковы: «ТЫ ЧТО ДУРА!!!!!?????» как же так  можно, а? нужно ж иметь хоть немного здравого смысла, чтоб полезть на  скоростное шоссе… интересно, если у нас, Google Maps.RU вдруг проложит  маршрут по МКАДу, неужели кто-то попрет туда пешком? ДА НИКОГДА! С таким  же успехом можно подавать в суда на прохожего, который тебя не туда  послал… «Господин судья, господа присяжные, я – истец, обвиняю ответчика  в том, что, когда я спешил на собеседование на должность ген. директора  ЛУКОЙЛ, не зная, где вход, попросил у ответчика подсказать где этот  самый вход находится и он направил меня в другом направлении. В  результате я опоздал на собеседование и не получил должность,  соответственно, потерял недвижимость по всему миру, целый автопарк  коллекционного авто, дети мои не пошли учиться в кембридж…. Прошу  передать жизнь ответчика в мое личное пользование…»<br />
Ситуация моя, конечно, из воздуха, но и гражданка США тоже удивила своей  глупостью… В принципе, там многие такие, к сожалению… Смотрела бы на  знаки, сэкономила бы себе кучу времени…<br />
Люди, используйте карты гугл не забывайте использовать также и свои  глаза, уши… Не пренебрегайте сигналами, которые они посылают в мозг,  анализируйте их и выстраивайте собственные маршруты, если того требует  ситуёвина… Удачи!</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/google-poslal-amerikanku-pod-kolesa.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Азартные игры и викторина «Твой SMS шанс» от МТС</title>
		<link>http://php.infoniac.ru/kak-ya-ne-vyigral-bmw-x5-ot-mts.html</link>
		<comments>http://php.infoniac.ru/kak-ya-ne-vyigral-bmw-x5-ot-mts.html#comments</comments>
		<pubDate>Wed, 28 Apr 2010 07:26:16 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[акции]]></category>
		<category><![CDATA[викторина]]></category>
		<category><![CDATA[лохотроны]]></category>
		<category><![CDATA[мтс]]></category>
		<category><![CDATA[оператор мобильной связи]]></category>
		<category><![CDATA[оффтоп]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=661</guid>
		<description><![CDATA[Как-то раз, пришло мне сообщение на мой номер МТС примерно такого содержания: &#171;Тебе зачислено 1000 баллов. Отправь бесплатную смс на номер 5888 (кажется, такой номер был), и участвуй в акции &#171;Твой СМС Шанс&#187;, где ты сможешь выиграть один из BMW X5 и т.д. Отвечай на простые вопросы, получай баллы, скачивай контент[...]&#187; И о чудо! Я [...]]]></description>
			<content:encoded><![CDATA[ <p>Как-то раз, пришло мне сообщение на мой номер МТС примерно такого содержания: &laquo;Тебе зачислено 1000 баллов. Отправь бесплатную смс на номер 5888 (кажется, такой номер был), и участвуй в акции &laquo;Твой СМС Шанс&raquo;, где ты сможешь выиграть один из BMW X5 и т.д. Отвечай на простые вопросы, получай баллы, скачивай контент[...]&raquo; И о чудо! Я поверил&#8230; Отправил. Пришло следующее смс, уже с номера 2009: &laquo;Ответь на вопрос и получи нное количество баллов: Кто первый полетел в космос? 1. Юрий Гагарин; 2. Лунтик&raquo;&#8230; Вся информация была доступна на сайте <strong>wallpapers.mts.ru</strong>.</p>
<span id="more-661"></span>
 <p>Тут стоит пояснить, что при отправке каждой смски с ответом (а это была просто цифра 1 или 2 в качестве варианта правильного ответа на вопрос), абонент получал доступ к одной картинке или чему-то там еще&#8230; Ну, вроде как за смску я, на самом деле, получал некий товар, а участие в викторине и баллы (как мне нравятся эти два слова&#8230; описывает, что делают операторы мобильной связи с нами&#8230; они нас &laquo;и баллы&raquo;) шло прицепом. Но мне на картинки было наплевать, т.к. ну нафига они мне сдались эти картинки, да еще и такие идиотские: клубничка, малинка, яблочко, песочек, солнышко, цветочек и т.д.</p>
 <p>После первого ответа на вопрос прошел день, и мне приходит смска с сообщением о том, что я могу выиграть &laquo;7 тыщь баллов&raquo; <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ответив на вопрос в следующей смске. Я ответил, получил 7000 баллов и получил следующий вопрос, за который предлагалось получить уже только 10 баллов. Я решил схитрить немного, и слать ответы только на вопросы, за которые предлагалось много баллов (видимо, это решение и спасло меня от полного опустошения от краха семейного бюджета, т.к. человек я, в принципе, азартный <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  , да и жене хотелось подарить что-нибудь этакое&#8230; например, BMW X5 <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ).<br />
 В общем, примерно на 700 отправленных в виде смсок на номер 2009 рублей, я опомнился: я же не гражданин РФ&#8230; (да, да&#8230; я такой&#8230;) а вдруг я хрен что-то выиграю&#8230; Залез на злосчастный wallpapers.mts.ru, открыл правила участия в конкурсе и снова чудо:</p>
 <blockquote>&laquo;[...]<br />
 5. Права и обязанности пользователей Услуги и участников SMS Акции<br />
 5.1. Пользователем Услуги и участником SMS Акции может стать любое физическое лицо, <strong>являющееся гражданином РФ</strong>, выступающее стороной по абонентскому договору оказания услуг мобильной связи с оператором сотовой связи ОАО &laquo;МТС&raquo; (далее — &laquo;Оператор&raquo;).<br />
 [...]&laquo;</blockquote>
 <p>Конечно, тут нужно винить только лишь себя, в том, что не прочел сразу все правила, но я не стал тогда себя винить, а, как принято, нашёл вполне нормального виновного – организатора викторины&#8230; Я начал себе задавать вопрос &laquo;а почему это они слали мне вопросы, принимали от меня ответы, если симка записана именно на меня, иностранца, и не на кого-нибудь ещё. Т.е., ребята знали прекрасно, что я, по правилам, участвовать в викторине не смогу, а вот подарить денег, вполне.&raquo; Конечно, нужно им отдать должное&#8230; хорошо все придумали&#8230; это ж сколько гастарбайтеров в Москве, да и вообще в России: они ж просто отправляют деньги НИ ЗА ЧТО! Просто, эрудицию проверяют за 45 р за смс с вопросом&#8230; Хотя, это и эрудицией назвать сложно&#8230;</p>
 <p>Тут я решил попробовать получить свои деньги обратно, т.к. считал, и до сих пор считаю, что я вообще не должен был получать СМСки с приглашением, с вопросами; и они должны были меня как-то предупредить, что я не смогу получить никакой приз или должны были получить от меня какую-нибудь электронную галочку хотя бы, что &laquo;с правилами участия в викторине ознакомлен, шлите дурацкие вопросы, а я вам буду деньги слать&raquo;. Конечно же такого ничего не было.</p>
 <p>Итак, позвонил я, вначале, в поддержку абонентов. Там сказали, &laquo;пишите жалобу&raquo;. Написал жалобу с подробным описанием ситуации, отправил по факсу. Показалось мало: зашёл в отделение связи, написал ещё одну жалобу через пару дней, поставили печать о приеме и я ушёл.</p>
 <p>Недавно получил СМСку от МТС с разъяснением того, что по правилам МТС, абонент должен ознакомиться с правилами оказания услуг компании МТС, прежде чем ими пользоваться&#8230; НО, т.к. вы (т.е. я) уже давний абонент нашей компании, мы возвращаем Вам на счет 127 рублей (они действительно были начислены)&#8230;</p>
 <p>Вот такая несложная схема работы операторов мобильной связи приносит им многомиллиардные расходы своих абонентов, соответственно, принося многомиллиардную прибыль им, операторам мобильной связи. Кстати, я бы не вернул и 127 рублей, т.к. где-то там у них в правилах сказано, что смс на номер 2009 – это запрос на оказание услуги по предоставлению контента, который я, в принципе получил, а то что он мне нафиг не нужен, это уже другое дело <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
 <p>Получается, теперь сотни и тысячи мошенников, которых пытаются посадить наши доблестные правоохранительные органы, могут просто сказать, &laquo;хм.. а нужно было думать, когда они нам деньги давали&#8230;&raquo; А мошеннические агенты по недвижимости так и поступают&#8230; по договорам своим они получает деньги за предоставление информации. А информация у них предоставляется в виде адреса квартиры, которую человек хочет посмотреть перед тем, как снять/купить. Зачастую, такие квартиры нифига не сдаются и не продаются, там удивленные хозяева открывают дверь и говорят &laquo;а мы ничего не сдаем!&raquo; А при попытке получить деньги обратно, человеку тычут договор, где черным по белому написано, что взимается плата за предоставление информации&#8230; Информацию получил? Получил? Она тебя не устраивает – это уже сугубо личное дело.</p>
 <p>Я на такие удочки не попадался, но слышал о таком, и в свое время, как-то даже звонил в такое агентство, где с меня хотели снять денег еще перед тем, как назовут адрес квартиры для съёма. Хорошо мне хватило ума отказаться <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . А вот в случае с викториной МТС, ума не хватило подумать, что ничего я не выиграю, и что это – всего лишь ОДИН большой лохотрон, который запустили все три основных оператора примерно в одно и тоже время&#8230;.</p>
 <p>Не попадайтесь на такие удочки, Дамы и Господа&#8230; Анализируйте!</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/kak-ya-ne-vyigral-bmw-x5-ot-mts.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Самовыполняющиеся функции JavaScript</title>
		<link>http://php.infoniac.ru/auto-executable-functions-javascript.html</link>
		<comments>http://php.infoniac.ru/auto-executable-functions-javascript.html#comments</comments>
		<pubDate>Thu, 08 Apr 2010 08:19:51 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Оптимизация]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[функции]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=621</guid>
		<description><![CDATA[Недавно меня сильно пробило на чтение всяческих обучающих материалов, просмотр видео роликов на тему программирования и сайтостроение. Оказывается, в Интернете столько всего, что всё знать вряд ли получится. А жаль:( Очень много информации, как полезной, так и не очень. Уже не помню, на каком именно сайте наткнулся на краткую информацию о самовыполняющихся функциях. Должен сказать, [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно меня сильно пробило на чтение всяческих обучающих материалов, просмотр видео роликов на тему программирования и сайтостроение. Оказывается, в Интернете столько всего, что всё знать вряд ли получится. А жаль:( Очень много информации, как полезной, так и не очень. Уже не помню, на каком именно сайте наткнулся на краткую информацию о самовыполняющихся функциях. Должен сказать, что я не обратил бы на этот термин практически никакого внимания, кроме как просто запомнил бы и, может быть, когда-нибудь, пришлось бы такие функции исползовать, если бы не недавний мой пост про <a href="http://php.infoniac.ru/javascript-zakladki.html">создание интерактивных закладок</a> в браузерах.</p>
<p><span id="more-621"></span>
<p>В чем суть самовыполняющихся функций? Для этого нужно разобраться в том, как создаются и выполняются обычные функции в JavaScript. Обычно функцию вначале нужно определить, и <a href="http://php.infoniac.ru/mootools-tutorial-day-4-functions.html">это можно сделать разными способами</a> и только после этого ее нужно вызвать. Например:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">// определяем функцию</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> execute <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
  $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'text'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'функция execute выполнена'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем условия ее выполнения</span>
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'exec'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> execute<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>
<span id="result"></span><br />
<button id="exec">Выполнить execute</button>
</p>
<p>В общем, мне кажется я много пишу, т.к. само название самовыполняющейся функции говорит само за себя: вызывать ее выполнение не требуется, т.к. она выполняется сразу после определения и всё, что нужно, это заключить определение функции в скобки и поставить после этой конструкции еще пару скобок, вот так:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">// определяем действия в функции</span>
&nbsp;
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//скобки говорят обработчику, что нужно сразу выполнить фунцию,</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//определённую немного ранее</span></pre>
</div>
</div>
<p>Почему я вспомнил, про интерактивные закладки? Потому что они построенны на базе таких функций и когда я пытался понять их структуру и логику, я задавал себе вопрос «зачем там скобки и что они делают?». Вот оно, как просо оказалось.</p>
<p>Пока мне в голову пришел только один пример работы самовыполняющейся функции: добавим еще несколько строчек JavaScript к нашему предыдущему примеру с функцией <strong>execute</strong>  и, через <strong>setTimeout()</strong> добавим самовыполняющуюся функцию, которая изменит результат выполнения предыдущей функции <strong>execute</strong> через 2 секунды, потому обратите внимание на текст сообщения над кнопкой вызова. А вот, собственно, и сам код:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> execute <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
  $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'text'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'функция execute выполнена'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> unexecute <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
  $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'result2'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'text'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'функция execute выполнена'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
  setTimeout<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'result2'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'text'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'и через 2 секунды определяется и самовыполняется функция unexecute'</span><span style="color: rgb(0, 153, 0);">)</span>
  <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(204, 0, 0);">2000</span><span style="color: rgb(0, 153, 0);">)</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
		$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'exec'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> execute<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
		$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'unexec'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> unexecute<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p><span id="result2"></span><br />
<button id="unexec">Выполнить unexecute</button></p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/auto-executable-functions-javascript.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Поиск RegExp в документе, с последующей отправкой данных на сервер</title>
		<link>http://php.infoniac.ru/kak-ya-iskal-regexp-v-dokumente.html</link>
		<comments>http://php.infoniac.ru/kak-ya-iskal-regexp-v-dokumente.html#comments</comments>
		<pubDate>Tue, 23 Mar 2010 09:37:30 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[практические задачи]]></category>
		<category><![CDATA[регулярные выражения]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=639</guid>
		<description><![CDATA[Недавно мой очень хороший знакомый попросил меня написать небольшой скрипт, который бы мог находить на загружаемой странице сайта определенное регулярное выражение и записывать вхождение в базу данных на сервере. Как только я услышал задачу, понял, что без AJAX тут никак. Пока с AJAXом у меня очень посредственные отношения: я написал только один полускрипт, который состоял [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно мой очень хороший знакомый попросил меня написать небольшой скрипт, который бы мог находить на загружаемой странице сайта определенное регулярное выражение и записывать вхождение в базу данных на сервере. Как только я услышал задачу, понял, что без AJAX тут никак. <span id="more-639"></span>Пока с AJAXом у меня очень посредственные отношения: я написал только один полускрипт, который состоял в том, что при выборе категории товара на сайте подгружались подкатегории и товары этой супер категории, а при выборе подкатегории, выбирались товары только этой одной подкатегории и все это было выполнено в виде выпадающих списков &lt;input type=&raquo;option&raquo;&gt;&#8230; Итак, тот первый полускрипт я написал на чистом JavaScript с помощью XMLHttpRequest (XHR) и, конечно же, не без помощи w3school.org.</p>
<p>В этой задаче мне пришлось также столкнуться с объектом RegExp JavaScript. Я немного потренировался в его использовании, что, несомненно пошло мне на пользу. Например, я узнал, что для того, чтобы использовать РегЭксп-ы, не обязательно объявлять переменную, новый экземпляр объекта RegExp, а можно просто записать регулярное выражение в виде текcтовой строки, т.е. вместо</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> r <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Regexp<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.*'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'g'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>можно просто написать вот так:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> r <span style="color: #339933;">=</span> <span style="color: #3366CC;">'/.*/g'</span><span style="color: #339933;">;</span></pre></div></div>

<p>Но, обратите внимание, что при использовании конструкции new RegExp использовать обратные слэши не нужно, т.к. при работе с регулярным выражением, объявленным таким образом, обработчик сам добавит недостающие символы. Также, в этом примере видно, что ключи к РегЭксп-у идут отдельным параметром к объекту, тогда как при составлении выражения в текстовой строке, ключ просто добавляется в конце регулярного выражения. В общем, если регулярное выражение просо записывается в строку, то и составляется оно по всем правилам составления регулярных выражений.</p>
<p>Ключ &#8216;g&#8217; говорит обработчику, что не нужно останавливаться после первого вхождения регулярного выражения, а нужно искать по всему тексту, но простого указания этого ключа, как оказалось, совсем не достаточно.</p>
<p>В отличие от РНР, где функция preg_match_all записывает все вхождения в массив самостоятельно, для того, чтобы проделать тоже самое в JavaScript мне пришлось ускорить седение волос на голове:) Оказалось, что для поиска всех вхождений в документе с помощью JavaScript, нужно написать код такого плана:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">r <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> RegExp<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.*text-([0-9]+).*'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'g'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
res <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>res <span style="color: #339933;">=</span> r.<span style="color: #660066;">exec</span><span style="color: #009900;">&#40;</span>s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> r.<span style="color: #660066;">lastIndex</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">// сюда вставляем код, который должен выполняться при нахождении регулярного выражения</span>
	<span style="color: #006600; font-style: italic;">// это может быть запить найденного в переменную или ещё что-нибудь</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>где <em>res</em> – массив в который записываются результаты поиска, где, в свою очередь, <em>res[<span style="color:red;">0</span>]</em> будет содержать вхождение всего регулярного выражения, <em>res[<span style="color:red;">1</span>]</em> будет содержать вхождение в первой группе скобок, <em>res[<span style="color:red;">2</span>]</em> – во второй и т.д.<br />
<em>r</em> – экземпляр регулярного выражения;<br />
<em>exec()</em> – метод объекта RegExp, который находит вхождения, соответствующие регулярному выражению и записывает их в массив. <em>exec()</em> отличается от <em>test()</em> тем, что записывает данные в массив, тогда как <em>test()</em> просто возвращает true если находит вхождение или false если не находит. Если же предпочитаете работать не с объектом, а с текстовой строкой, которая содержит РегЭксп, то используйте обычные методы match() – аналог exec(), или search() – почти аналог test(), с тем отличием, что возвращает позицию начала вхождения.</p>
<p>Тут потребуется небольшая оговорка по поводу использования search(): так как он возвращает число, а не булев тип (true/false), при отсутствии вхождения этот метод возвращает -1.</p>
<p>Кстати, при использовании просто текстовой строки для хранения РегЭксп-а, можно также использовать метод replace(), который находит вхождение регулярного выражения, или обычного текста, и заменяет на указанный в параметре текст.</p>
<p>Идем далее: <em>s</em> – источник поиска, т.е. где будем искать.<br />
<em>.lastIndex</em> – параметр, отвечающий за позицию, где было найдено последнее вхождение. Если этот параметр не указать, обработчик JavaScript найдет только первое вхождение, даже при указании ключа &#8216;g&#8217;.</p>
<p>Далее, часть Ajax. На сайте этого моего товарища уже были подключены Prototype и jQuery, потому, я решил не подключать еще и Mootools к этому салату (вначале думал подключить, так как только с ним и знаком). Решил просто посмотреть документацию по этим библиотекам, чтобы понять, какой из них лучше воспользоваться для составления пакета и отправки на скрипт сервера. Оказалось, что проще, чем это предлагает сделать jQuery, не получится!</p>

<div class="wp_syntax"><div class="code"><pre class="jquery" style="font-family:monospace;">$.post(ServerSideScriptUrl, {var1:value1, val2:val2 ...})</pre></div></div>

<p>Как видно из этого, вообще ничего проще нет. Спасибо jQuery!! Знакомый до боли селектор из Mootools $, потом указываем метод отправки – get/post, и несколько параметров. Конечно, в моем скрипте, требовалось лишь отправить данные, без их последующего приема, потому мне именно вариант jQuery показался самым простым. К сожалению, массивы с данными через XHR отправить не получится, но форма передачи данных на сервер, указанная выше, вполне справится с задачей передачи вполне большого объема данных.</p>
<p>Думаю, на этом и хватит описывать мой героический скрипт <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  РНР скрипт на стороне сервера даже описывать не буду, т.к. это скрипт на уровне первого класса (выполнен, тоже на уровне первого класса): получил данные, подключился к БД, записал в таблицу. Всё!</p>
<p>Конечно, это не большое достижение, но, все-таки – достижение. А тот факт, что я это все описал в этом посте, еще больше закрепит эти знания в моем прогламмерском мозгу.</p>
<p>Кстати, на фоне моего поста, посвященного первой решенной практической задачке, объявляю акцию:</p>
<blockquote style="color:red; font-size:14px; font-weight:bold;"><p>Если вы учитесь программированию и решаете какие-либо задачи, присылайте их мне, буду их с удовольствием публиковать на рассмотрение всех посетителей блога. Думаю, они будут интересны не только мне!</p></blockquote>
<p>Удачи!</p>
<p style="font-style:italic">P.S. Ух! Сколько ж раз я повторяю это слово в своих постах&#8230; со счета сбился&#8230; Но, КСТАТИ! Мой следующий урок Mootools посвещается именно работе с регулярными выражениями, так что НЕ пропустите!</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/kak-ya-iskal-regexp-v-dokumente.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перемещение/Передвижение с помощью класса Drag.Move – Урок 12</title>
		<link>http://php.infoniac.ru/mootools-drag-move-objects-tut12.html</link>
		<comments>http://php.infoniac.ru/mootools-drag-move-objects-tut12.html#comments</comments>
		<pubDate>Mon, 01 Mar 2010 19:59:17 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[drag]]></category>
		<category><![CDATA[move]]></category>
		<category><![CDATA[интерактив]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=592</guid>
		<description><![CDATA[По моему мнению, верх интерактивности, это когда пользователь сайта может не просто ввести текст в определенную форму, а когда он сам может изменять дизайн, например, сам определять те или иные параметры внешнего вида сайта или использовать перетаскивание для заполнения своей покупательской корзины, например. Перетаскивание - один из самых мощных инструментов JavaScript и библиотек на его основе. Поклонники "высшего пилотажа", те кто стремится сделать свои скрипты супер быстрыми и оптимизированными, скажут, что нужно всегда использовать Javascript для создания кода, но библиотеки сделаны не просто для развлечения. Да, написав код на JavaScript, вы сделаете свой скрипт самым быстрым насколько это возможно (конечно, в зависимости от уместности использования тех или иных функций/методов), но такие библиотеки, как Mootools, jQuery, Prototype и др. призваны облегчить жизнь веб-программиста: они сделали создание специальных эффектов и интерактивности на сайте довольно простым, что и должен будет доказать этот урок. Итак, учимся создавать перетаскиваемые объекты с помощью классов Drag и Drag.Move.]]></description>
			<content:encoded><![CDATA[<h2>Drag.Move – Перемещение с помощью Mootools 1.2</h2>
<p>С 10-го урока я начал публиковать уроки, посвященные спец. эффектам, которые можно создавать с помощью библиотеки Mootools. Если Вы еще не взглянули в эти уроки, очень рекомендую <a href="http://php.infoniac.ru/fx-morph-fx-options-fx-events-day11.html">посмотреть</a>.</p>
<p>В сегодняшнем уроке мы поставим под прицел класс Drag.Move – очень сильный инструмент, который позволяет добавить возможность перемещения/перетаскивания элементов на странице. Вообще, эта возможность – это одна из моих самых любимых функций JavaScript и всех библиотек на его основе.</p>
<p>Используется этот класс также, как и все остальные плагины библиотеки: создается новый (<em>«new»</em>) объект Drag.Move и назначается переменной. Далее назначаются параметры и события объекта. В принципе, это и есть вся основа. Кстати, объекты Drag и Drag.Move не определены в основной библиотеке, потом нужно будет создавать свою собственную сборку Mootools с помощью <a title="Mootools More Builder" href="http://mootools.net/more" target="_blank">онлайн инструмента</a> на сайте разработчиков.</p>
<h2>Основы</h2>
<h3>Drag.Move</h3>
<p>Установка перетаскиваемого элемента довольно проста. Давайте рассмотрим пример ниже. Обратите внимание, как отделяются параметры и события класса <em>Drag.Move</em> от событий и параметров класса <em>Drag</em>. Drag.Move расширяет и дополняет класс Drag, потому он будет принимать не только свои параметры и события, но и те, что относятся к классу Drag. Сегодня мы не будем углубляться в работу Drag, но мы взглянем на несколько его интересных параметров и событий.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	        <span style="color: rgb(0, 102, 0); font-style: italic;">// параметры класса Drag.Move</span>
		droppables<span style="color: rgb(51, 153, 51);">:</span> dropElement<span style="color: rgb(51, 153, 51);">,</span>
		container<span style="color: rgb(51, 153, 51);">:</span> dragContainer<span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// параметры класса Drag</span>
		handle<span style="color: rgb(51, 153, 51);">:</span> dragHandle<span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// событие класса Drag.Move</span>
		onDrop<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
                        <span style="color: rgb(0, 102, 0); font-style: italic;">// вызовет предупреждение с атрибутом id сброшенного элемента</span>
                        <span style="color: rgb(0, 102, 0); font-style: italic;">// в элемент, принимающий сброшенные элементы</span>
                        <span style="color: rgb(0, 102, 0); font-style: italic;">// (это может показаться запутанным, на первый взглад, но, надеюсь,</span>
                        <span style="color: rgb(0, 102, 0); font-style: italic;">// далее все проясниться</span>
                        <span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span>dr.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'id'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">// События Drag</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">// передаются перетаскиваемому элементу</span>
                onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			<span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span>el.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'id'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
		<span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Разберем всё это по полочкам…</p>
<h3>Параметры Drag.Move</h3>
<p>Параметры Drag.Move позволяют назначить два основных типа элементов:</p>
<ul>
<li><strong>droppables</strong> – опеределяет элементы, которые будут способны «принять» сброшенный элемент</li>
<li><strong>container</strong> – установить контейнер перетаскиваемого элемента (будет удерживать элемент внутри этого элемента-контейнера)</li>
</ul>
<p>Установка параметров доволно проста:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//определяем один элемент по id, который можно будет перетаскивать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_element'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем массив элементов по их классу, которые смогут принят сброшенный элемент</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dropElements <span style="color: rgb(51, 153, 51);">=</span> $$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'.drag_element'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем контейнер</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragContainer <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_container'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем объект Drag.Move</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag.Move</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">// назначаем элементу droppables массив элементов, определённых немного выше</span>
		droppables<span style="color: rgb(51, 153, 51);">:</span> dropElements <span style="color: rgb(51, 153, 51);">,</span>
               <span style="color: rgb(0, 102, 0); font-style: italic;">// назначаем элементу container элемент, определенный немного выше</span>
		container<span style="color: rgb(51, 153, 51);">:</span> dragContainer
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Теперь наш перетаскиваемый элемент имеет свой контейнер, а также у нас имеется класс элементов, который будет принимать сбросы других элементов. Тут можно провести аналогию с современными аэропортами: не все аэропорты предназначены для принятия и обслуживания определенных типов самолётов. Так и в нашем случае: необходимо определить, какой класс сможет принимать «на посадку» перетаскиваемые элементы.</p>
<h3>События объекта Drag.Move</h3>
<p>События этого объекта дают возможность запускать определенные заранее функции в определенные этапы существования объекта, как например в тот момент, когда пользователь «совершил захват» передвигаемого элемента, когда он начинает его передвигать или когда он его сбрасывает. События объекта Drag.Move передаются каждому перетаскиваемому и сбрасывамому элементу в качестве параметров.</p>
<ul>
<li><strong>onDrop</strong> – запускается при сбросе элемента в соответствующий принимающий элемент;</li>
<li><strong>onLeave</strong> – запускается когда перетаскиваемый элемент покидает границы элемента, способного принимать перетаскиваемые элементы;</li>
<li><strong>onEnter</strong> – запускается при входе перетаскиваемого элемента в зону принимающего элемента.</li>
</ul>
<p>Как и <a href="http://php.infoniac.ru/mootools-tutorial-day-5-events.html">любые другие события</a>, которые мы до этого обсуждали, события объекта Drag.Move вызывают функцию, которая выполняется когда событие исполняется.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragContainer <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_container'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag.Move</span>
	droppables<span style="color: rgb(51, 153, 51);">:</span> dropElements <span style="color: rgb(51, 153, 51);">,</span>
	container<span style="color: rgb(51, 153, 51);">:</span> dragContainer <span style="color: rgb(51, 153, 51);">,</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">// События Drag.Move</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">// функции Drag.Move передадут перетаскиваемый элемент (в данном случае 'el')</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">// принимающему элементу, с которым перетаскиваемый взаимодействует (у нас 'dr')</span>
	onDrop<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// на русском: "если элемента, на который происходит сброс НЕ ЯВЛЯЕТСЯ принимающий"</span>
		<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 153, 51);">!</span>dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			<span style="color: rgb(0, 102, 0); font-style: italic;">//ничего не делать</span>
		<span style="color: rgb(0, 153, 0);">}</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// в противном случае, т.е. элемент принимающий</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// делать то-то, то-то</span>
		<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>
			<span style="color: rgb(0, 102, 0); font-style: italic;">// действия, который произойдут,</span>
			<span style="color: rgb(0, 102, 0); font-style: italic;">// когда элемента будет сброшен на принимающий элемент</span>
		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
	onLeave<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// эта функция будет запущена, когда перетаскиваемый элемент</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// покинет границы принимающего элемента</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
	onEnter<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// эта функция будет запущена, когда перетаскиваемый элемент</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// входит в границы принимающего элемента</span>
	<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>Несколько событий объекта Drag</h3>
<p>У объекта Drag есть совсем немного событий и параметров, но и я не все буду рассматривать:</p>
<h4>Параметр – snap</h4>
<p>Параметр <strong>snap</strong> позволяет определить, на сколько пикселей пользователь должен передвинуть курсор прежде чем начнется сам процесс перемещения элемента. Значение по умолчанию – 6, но можно указать любое число или переменную, содержащую число. Конечно же, существуют некие логические рамки (установив это значение на 1000, никакой пользы не принесешь своему приложению), но все-таки этот параметр может сослужить хорошую службу разработчику при улучшении своего приложения.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>
		snap<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">10</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h4>Параметр – handle</h4>
<p>Данный параметр добавляет &laquo;ручку&raquo; к вашему перетаскиваемому элементу. Эта «ручка» определяет единственную область элемента, которой можно воспользоваться для &laquo;захвата&raquo; перетаскиваемого элемента, что позволяет использовать оставшуюся часть элемента для других целей. Для определения &laquo;ручки&raquo;, просто вызовите элемент.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">// определяет массив элементов по классу</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">// это позволит нам добавить несколько "ручек",</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">// если нам нужно будет определять несколько передвигаемых элементов</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragHandle <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_handle'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	        <span style="color: rgb(0, 102, 0); font-style: italic;">// параметры Drag</span>
		handle<span style="color: rgb(51, 153, 51);">:</span> dragHandle
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h4>Событие onStart</h4>
<p>Событие <strong>onStart</strong> определяет функцию, которая будет запускаться при начале перетаскивания. Если значение параметра <strong>snap</strong> установлено большое, то событие не начнется до тех пор, пока заданное количество пикселей не будет пройдено.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>
		onStart<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
                    <span style="color: rgb(0, 102, 0); font-style: italic;">// сюда вставляем всё, что должно произойти вначале перетаскивания</span>
               <span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h4>Событие – onDrag</h4>
<p>Событие <strong>onDrag</strong> будет работать постоянно во время перетаскивания элемента.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>
		onDrag<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
                    <span style="color: rgb(0, 102, 0); font-style: italic;">// сюда вставляем всё, что должно происходить во время перетаскивания</span>
               <span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h4>Событие onComplete</h4>
<p>Событие <strong>onComplete</strong> запускается когда происходит сброс перетаскиваемого элемента и оно будет запущено вне зависимости от того, будет этот элемент приземлен в элементе droppable или нет.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>
		onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
                    <span style="color: rgb(0, 102, 0); font-style: italic;">// сюда вставляем всё, что должно произойти при сбросе элемента</span>
               <span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h2>Примеры</h2>
<p>Снова подошло время моей любимой части любого урока: Пример!</p>
<p>Давайте, для упрощения процесса переваривания всей информации этого урока, соорудим пример, который бы содержал максимум из представленных параметров, событий и т.д. Поехали!</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_me'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragContainer <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_cont'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragHandle <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_me_handle'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dropElement <span style="color: rgb(51, 153, 51);">=</span> $$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'.draggable'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> startEl <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'start'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> completeEl <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'complete'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragIndicatorEl <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_ind'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> enterDrop <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'enter'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> leaveDrop <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'leave'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dropDrop <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drop_in_droppable'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> 
&nbsp;
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	    <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag.Move</span>
		droppables<span style="color: rgb(51, 153, 51);">:</span> dropElement<span style="color: rgb(51, 153, 51);">,</span>
		container<span style="color: rgb(51, 153, 51);">:</span> dragContainer<span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>
		handle<span style="color: rgb(51, 153, 51);">:</span> dragHandle<span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// События Drag.Move</span>
		onDrop<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 153, 51);">!</span>dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span> <span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
        	        <span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>
				dropDrop.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>
				el.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#fff'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает белым</span>
				dr.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#667C4A'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает зеленым</span>
			<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">;</span>
		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
		onLeave<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			leaveDrop.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>
		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
		onEnter<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			enterDrop.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>
		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// Drag Events</span>
		onStart<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			startEl.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>
		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
		onDrag<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			dragIndicatorEl.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>
		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
		onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			completeEl.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>
		<span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>В этом примере, в отличие от большинства ранее представленных, мы будем серьезно использовать CSS, потому нужно добавить некоторые пояснения к таблице CSS. Для того, чтобы контейнер Drag.Move нормально определялся в IE, нужно будет подробно объяснить позиционирование элементов этому популярному браузеру. Очень важно определить элементу-контейнеру «position:relative», а перетаскиваемому элементу «position:absolute». Далее нужно удостовериться в том, что знаяения «left» и «top» для этого элемента тажке установлены. Ну, а если вы создаете приложение с перетаскиваемыми элементами, которое никоим образом не предназначается для IE, можете вообще не обращать внимание на эту часть.</p>
<div class="wp_syntax">
<div class="code">
<pre class="css" style="font-family: monospace;">body <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">margin</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 102, 204);">0</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">padding</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 102, 204);">0</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(128, 128, 128); font-style: italic;">/* убедитесь в том, что перетаскиваемый элемент умеет "position: absolute"
 а параметры top и left установлены на значения для первоначального положения элемента*/</span>
<span style="color: rgb(204, 0, 204);">#drag_me</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">100px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">100px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#333</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">position</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">absolute</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">top</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 102, 204);">0</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">left</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 102, 204);">0</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(204, 0, 204);">#drop_here</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">200px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">200px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#eee</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(128, 128, 128); font-style: italic;">/* убедитесь в том, что элемент-контейнер имеет "position:relative" */</span>
<span style="color: rgb(204, 0, 204);">#drag_cont</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#ccc</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">600px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">500px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">position</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">relative</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">margin-top</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">100px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">margin-left</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">100px</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(204, 0, 204);">#drag_me_handle</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);"><span style="color: rgb(204, 102, 204);">100</span>%</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">auto</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#666</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">cursor</span><span style="color: rgb(0, 170, 0);">:</span>move<span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(204, 0, 204);">#drag_me_handle</span> span <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">display</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">block</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">padding</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">5px</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(102, 102, 255);">.indicator</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);"><span style="color: rgb(204, 102, 204);">100</span>%</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">auto</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#0066FF</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">border-bottom</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">1px</span> <span style="color: rgb(153, 51, 51);">solid</span> <span style="color: rgb(204, 0, 204);">#eee</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(102, 102, 255);">.indicator</span> span <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">padding</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">10px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">font-size</span><span style="color: rgb(0, 170, 0);">:</span><span style="color: rgb(153, 51, 51);">14px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">display</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">block</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(102, 102, 255);">.draggable</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">200px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">200px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(0, 0, 0); font-weight: bold;">blue</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span></pre>
</p></div>
</div>
<p>Далее следует HTML код, который создаст нам плацдарм для восхощения возможностями Mootools.</p>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drag_cont"</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"start"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Начало<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drag_ind"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Перетаскивание<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"complete"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Завершен<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"enter"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Вход в принимающий элемент<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"leave"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Выход из принимающего элемента<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drop_in_droppable"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Сброшен в принимающий элемент<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drag_me"</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drag_me_handle"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>ручка<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drop_here"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"draggable"</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span></pre>
</p></div>
</div>
<div id="drag_cont">
<div style="background-color: rgb(0, 102, 255);" id="start" class="indicator"><span>Начало</span></div>
<div style="background-color: rgb(0, 102, 255);" id="drag_ind" class="indicator"><span>Перетаскивание</span></div>
<div style="background-color: rgb(0, 102, 255);" id="complete" class="indicator"><span>Завершен</span></div>
<div style="background-color: rgb(0, 102, 255);" id="enter" class="indicator"><span>Вход в принимающий элемент</span></div>
<div style="background-color: rgb(0, 102, 255);" id="leave" class="indicator"><span>Выход из принимающего элемента</span></div>
<div style="background-color: rgb(0, 102, 255);" id="drop_in_droppable" class="indicator"><span>Сброшен в принимающий элемент</span></div>
<div style="position: absolute; left: 59px; top: 279px; background-color: rgb(51, 51, 51);" id="drag_me">
<div id="drag_me_handle"><span>ручка</span></div>
</p></div>
<div style="background-color: rgb(238, 238, 238);" id="drop_here" class="draggable"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootools-drag-move-objects-tut12.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создаем интерактивные закладки JavaScript</title>
		<link>http://php.infoniac.ru/javascript-zakladki.html</link>
		<comments>http://php.infoniac.ru/javascript-zakladki.html#comments</comments>
		<pubDate>Thu, 25 Feb 2010 18:37:15 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Оптимизация]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[bookmarks]]></category>
		<category><![CDATA[закладки]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=609</guid>
		<description><![CDATA[Я часто замечал, что многие сайты предлагают добавить закладку для быстрого выполнения действия на этом сайте, например заполнение формы или что-то подобное. Изнутри такая закладка была похожа на обычную только адресом, а далее для меня всё выглядело, как каракули. Когда я только знакомился с интернетом и технологиями, его делающими, мне было интересно, как делаются такие закладки. Когда познакомился с JavaScript, понял, что с помощью JavaScript. И потом я захотел делать свои собственные закладки. Так, когда я начал заниматься SEO появилась необходимость быстро проверить ту или иную страницу на предмет индексации, сколько на нее ссылок и т.д. Руками это все делать накладно, а специализированные программы для проверки одной страницы - это слишком. Так я создал свою первую интерактивную закладку :) - небольшое, но достижение!]]></description>
			<content:encoded><![CDATA[<p>Всем привет!</p>
<p>Хочу поделиться опытом! Я давно хотел научиться делать интерактивные закладки, чтобы размещать их на панели закладок браузера, но, к сожалению, пока этого так и не сделал…</p>
<p>Зато, я подсмотрел, как это делается у всяких сервисов, как, например, у сервиса автоматического постинга в различные сервисы закладок – <strong><a href="http://www.bposter.net/?a=13968">bposter.net</a></strong>, и теперь, как минимум, могу просто их изменять и приспосабливать под собственные нужды. Но, обо всем по порядку&#8230;</p>
<p>Вначале, напомню, кто такая эта панель, да еще и закладок. В Win Safari она выглядит так:</p>
<p><img class="aligncenter size-full wp-image-612" title="browser-window" src="http://php.infoniac.ru/wp-content/uploads/browser-window1.jpg" alt="" width="400" height="389" /></p>
<p>Для тех, кто пока не рассмотрел и не особо понял, что это, пожалуйста:</p>
<p><a href="http://php.infoniac.ru/wp-content/uploads/bookmarks-pannel-zoomed-in-150x291.jpg"><img class="alignleft size-full wp-image-611" title="Панель закдадок" src="http://php.infoniac.ru/wp-content/uploads/bookmarks-pannel-zoomed-in-150x291.jpg" alt="Панель закладок браузера Safari" width="150" height="29" /></a></p>
<p>Наверняка, многие знают, что сегодняшние браузеры могут хранить в закладках не только URL адреса понравившихся или полезных сайтов, но и короткие скрипты JavaScript, основанные на самовыполняемые функции, о которых я уже написал <a href="http://php.infoniac.ru/auto-executable-functions-javascript.html" title="Самовыполняющиеся функции JavaScript">короткий пост</a>, что, как мне кажется, станет очень полезным для многих. Я уже начал интенсивно пользоваться такими закладками.</p>
<p>Пока у меня есть только несколько примеров, как и зачем можно использовать такие закладки. Например, думаю, все специалисты, занимающиеся продвижением сайтов, знают сервис siteexplorer.search.yahoo.com, ведь на сегодняшний день, это чуть ли не единственный источник данных по обратным ссылкам на любой сайт, а для того, чтобы получить эту информацию, нужно сделать слишком много телодвижений, а именно:</p>
<p>- открыть сервис;</p>
<p>– возможно, yahoo.com попросит авторизоваться;</p>
<p>- набрать адрес сайта, инфу о котором требуется узнать;</p>
<p>- нажать на кнопку «Inlinks», чтобы перейти на отображение не кол-ва страниц в кэше Яху, а на, собственно, информацию об обратных ссылках;</p>
<p>- выбрать опцию «Except from this domain» (Кроме этого домена), чтобы исключить ссылки с этого домена;</p>
<p>– возможно, выбрать опцию «Entire Site», чтобы посмотреть ссылки, приходящие на страницы всего сайта, а не только на одну страницу.</p>
<p>Чтобы исключить всё это, требуется всего-лишь немного наблюдательности. Например, перетащите эту ссылку -</p>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://siteexplorer.search.yahoo.com/search?p='+encodeURIComponent(document.domain)+'&amp;bwm=i&amp;bwmo=d&amp;bwmf=s');})();">Обратные ссылки по SiteExplorer</a></p>
<p>- в панель закладок вашего браузера и нажмите на появившуюся там кнопку – вы увидите все ссылки, приходящие на все страницы моего блога.</p>
<p>А вот и сам код ссылки:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">(</span><span style="color: #3366cc;">'http://siteexplorer.search.yahoo.com/search?p='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">(</span>document.<span style="color: #660066;">domain</span><span style="color: #009900;">)</span><span style="color: #339933;">+</span><span style="color: #3366cc;">'&amp;amp;bwm=i&amp;amp;bwmo=d&amp;amp;bwmf=s'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>Что в коде? Первым словом в атрибуте href идет слово <strong>javascript</strong>, которое сообщает браузеру, что ссылка – это JavaScript код. Далее – функция, которая открывает новое окно, вставляя имя домена (<strong>document.domain</strong>) текущего документа «куда надо». (По сути, такая ссылка действует также,  как и ссылка вида <strong>javascript:history.back()</strong>.) Если вместо <strong>window.domain</strong> использовать метод <strong>location.href</strong>, в открывшейся вкладке (окне), будут показаны обратные ссылки только на открытую страницу.</p>
<p>Вот еще несколько закладок, которые я уже соорудил (если кому что нужно, перетягивайте ссылку в панель закладок):</p>
<h3>• Посмотреть, есть ли страница в индексе Яндекса:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://www.yandex.ru/yandsearch?serverurl='+encodeURIComponent(location.href));})();">Индекс Яндекса</a></p>
<p>Исходник:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">(</span><span style="color: #3366cc;">'http://www.yandex.ru/yandsearch?serverurl='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">(</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<h3>• Количество страниц с домена в индексе Google:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://www.google.ru/search?q=site:'+encodeURIComponent(document.domain));})();"># страниц в гугле</a></p>
<p>Исходник:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">(</span><span style="color: #3366cc;">'http://www.google.ru/search?q=site:'</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">(</span>document.<span style="color: #660066;">domain</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<h3>• Есть ли страница в индексе Google:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://www.google.ru/search?q=cache:'+encodeURIComponent(location.href));})();">Есть ли в кэше гугла?</a></p>
<p>Исходник:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">(</span><span style="color: #3366cc;">'http://www.google.ru/search?q=cache:'</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">(</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>Вообще, каждый, у кого есть плагин SearchStatus для Firefox, может проверить наличие страницы в кэше Гугла, но, может кому и пригодится такая закладка.</p>
<h3>• <a href="http://www.bposter.net/?a=13968">Постинг в закладки через сервис bposter.net</a>:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://www.bposter.net/?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title)+'&amp;desc='+encodeURIComponent(window.getSelection?window.getSelection():''));})();">В закладки!!!</a></p>
<p>Исходник:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">(</span><span style="color: #3366cc;">'http://www.bposter.net/?url='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">(</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">)</span><span style="color: #339933;">+</span><span style="color: #3366cc;">'&amp;amp;title='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">(</span>document.<span style="color: #660066;">title</span><span style="color: #009900;">)</span><span style="color: #339933;">+</span><span style="color: #3366cc;">'&amp;amp;desc='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">(</span>window.<span style="color: #660066;">getSelection</span><span style="color: #339933;">?</span>window.<span style="color: #660066;">getSelection</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">:</span><span style="color: #3366cc;">''</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>Тут следует отметить, что я этот код совсем не придумывал, а просто заменил метод <strong>location.href</strong> на <strong>window.open</strong>, чтобы открывалась новая закладка (или окно, в зависимости от настроек браузера).</p>
<h3>• Обратные ссылки по SiteExplorer.search.yahoo.com на весь сайт:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://siteexplorer.search.yahoo.com/search?p='+encodeURIComponent(document.domain)+'&amp;bwm=i&amp;bwmo=d&amp;bwmf=s');})();">Обратные ссылки на сайт</a></p>
<p>Исходник:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">(</span><span style="color: #3366cc;">'http://siteexplorer.search.yahoo.com/search?p='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">(</span>document.<span style="color: #660066;">domain</span><span style="color: #009900;">)</span><span style="color: #339933;">+</span><span style="color: #3366cc;">'&amp;amp;bwm=i&amp;amp;bwmo=d&amp;amp;bwmf=s'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<h3>• Обратные ссылки по SiteExplorer.search.yahoo.com на данную страницу:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://siteexplorer.search.yahoo.com/search?p='+encodeURIComponent(location.href)+'&amp;bwm=i&amp;bwmo=d&amp;bwmf=u');})();">Обратные ссылки на страницу</a></p>
<p>Исходник:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">(</span><span style="color: #3366cc;">'http://siteexplorer.search.yahoo.com/search?p='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">(</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">)</span><span style="color: #339933;">+</span><span style="color: #3366cc;">'&amp;amp;bwm=i&amp;amp;bwmo=d&amp;amp;bwmf=u'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>Хочу заметить, что все эти закладки открывают новые вкладки (или окна, в зависимости от браузера и его настроек), что, как мне кажется, на порядок удобнее, чем  когда эти страницы открываются на месте просматриваемых.</p>
<p>Ну вот, пока это все закладки, да и все, что я хотел тут написать. По мере того, как у меня будут появляться такие закладки, обязательно буду ими делиться через эту страницу.</p>
<p>Всем удачи в своих открытиях!</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/javascript-zakladki.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Есть такой вопрос: Как получить ссылки с известных доменов?</title>
		<link>http://php.infoniac.ru/question-how-to-get-links-from-popular-domains.html</link>
		<comments>http://php.infoniac.ru/question-how-to-get-links-from-popular-domains.html#comments</comments>
		<pubDate>Fri, 15 Jan 2010 08:23:55 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Поисковые системы]]></category>
		<category><![CDATA[персонализированный поиск]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=635</guid>
		<description><![CDATA[Получил на работе номер 308 расширенного выпуска ашмановской рассылки «Продвижение сайта. Профессиональные советы экспертов«, где есть ссылка на статью «Getting Links from the Top 50 Domains» («Получение ссылок с Топ 50 доменов Интернета»). Решил поделиться мыслями и наблюдениями по поводу неё. Некоторые из пунктов очень очевидны, думаю, только ленивый СЕО-работник не использует их, а некоторые [...]]]></description>
			<content:encoded><![CDATA[<div>Получил на работе номер 308 расширенного выпуска ашмановской  рассылки «<strong>Продвижение сайта. Профессиональные советы экспертов</strong>«,   где есть ссылка на статью «<a rel="nofollow" href="http://www.thegooglecache.com/uncategorized/getting-links-from-the-top-50-domains/">Getting Links from the Top 50 Domains</a>»  («Получение ссылок с Топ 50 доменов Интернета»). Решил поделиться  мыслями и наблюдениями по поводу неё.</p>
<p>Некоторые из пунктов очень очевидны, думаю, только ленивый  СЕО-работник не использует их, а некоторые раскрыты только потому, что  они уже и так слишком раскрыты. Я имею ввиду, ну вот зачем раскрывать  всем, что с домена nytimes.com (а точнее с одного из его поддоменов),  либо с форума на поддомене sourceforge.net можно получить ссылку без  nofollow? А только потому, что там этих ссылок уже и так уйма, и  добавлять еще и себя туда, среди виагры, порнухи, таблеток и фармы  абсолютно не нужно – такая ссылка, мне кажется, только навредит. Сами  посудите: вот <a rel="nofollow" href="http://code.nytimes.com/projects/xslcache/ticket/3">одна   страница</a>, вот <a rel="nofollow" href="http://code.nytimes.com/projects/xslcache/ticket/1">другая</a>.  Эти страницы о PECL, а то, что там вылазят ссылки на всякие нечистоты –  уже не хорошо, и даже если там вдруг появится ссылка на  сайт/страницу/статью про PECL – сомневаюсь, что она даст ее владельцу  серьезный вес, т.к. вся страница уже с черной пометкой «spam page»  где-то там, в недрах гугловской БД и Гугл либо не учитывает эти ссылки  при ранжировании, либо просто выбросил ее из свой выдачи.</p>
<p>Что касается ссылок с остальных доменов – мне думается, они рано или  поздно все равно утратят свою значимость при ранжировании, но пока,  естественно, можно их и попользовать. Например,  можно, добавить ссылку  на сайт в профиль при регистрации на форуме sourceforge (вообще, это  нужно делать всегда, при регистрации на любом форуме), можно/нужно  добавить ссылку на что-то продвигаемое в подпись, но и нужно потом  использовать этот профиль, нужно быть активным форумчанином, чтобы эти  ссылки имели хоть какую-то значимость. Еще раз, в качестве примера,  возьмем уже упомянутый форум на поддомене sourceforge.net –  http://ettercap.sourceforge.net/forum/. Я не поленился и посмотрел на  список форумчан. Судя по их количеству – определенно очень популярный  форум. 28419 пользователей. А между тем, кто-нибудь слышал про такую  программульку, как Ettercap? Если кто не в курсе, вышла версия 0.7.3!!!  Оказалось, что 27093 пользователя не написало ни одного сообщения (хотя,  самые отпетые спамеры умудрились зарегистрироваться еще в 2001 году –  они не оставили ни одного сообщения, но у них есть интересные сайты про  фарм). Вопрос в том, стоит ли тратить время, на то, чтобы  зарегистрироваться на форуме только ради того, чтобы получить одну  ссылку, которая, скорее всего, уже никогда не проиндексируется из-за  большого количества спаммынх ссылок? Длинный вопрос получился…</p>
<p>Ради чего я всего это написал? Просто хотел поделиться мыслью о том,  что реально полезной информации на тему СЕО мало. Публикуется, в  основном то, что опытные СЕО-специалисты уже испробовали и им это  результата не дало, либо метод исчерпал себя. Они публикуют метод на  своем блоге, получают кучу благодарностей в комментариях, трафика и  доход с рекламы на блоге. Конечно же, отнюдь не все методы,  публикующиеся на СЕО блогах – фальшивки. Например, я подписан на RSS <a href="http://shakin.ru/">блога Михаила Шакина – shakin.ru</a> (Михаил  мне, вообще, кажется, талантливым писателем, т.к. он не только про  Интернет интересно пишет, но и просто про жизнь), и блога известного <a href="http://blog.dimok.ru/">Рунет деятеля Димка</a> (моего тезки,  только меня просто Дима зовут <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), который недавно получил от WebmastersWorld мою любимую игрушку – <strong>МакБук   Pro</strong>.</p>
<p>Итого: верить всему, что написано в СЕО статьях и блогах, мне  кажется, не нужно. Главное в этой сфере – умение анализировать факты!  Почитал, проанализировал. При необходимости, проверил, протестировал.  Слепо верить и следовать всему, что пишут в Интернете – не всегда верно и  не всегда полезно. Так что моим ответом на вопрос в заголовке будет  таким: <strong>Нужно думать самому.</strong>.</div>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/question-how-to-get-links-from-popular-domains.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
