<?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>fxposter&#039;s wave &#187; jQuery</title>
	<atom:link href="http://blog.fxposter.org/tag/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fxposter.org</link>
	<description>Stories about Ruby, JavaScript, Objective-C and other cool tools</description>
	<lastBuildDate>Sun, 30 Oct 2011 20:00:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Особенности работы jQuery.live()</title>
		<link>http://blog.fxposter.org/2010/06/16/jquery-live-method/</link>
		<comments>http://blog.fxposter.org/2010/06/16/jquery-live-method/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 23:21:26 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Работа]]></category>
		<category><![CDATA[event bubbling]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[live]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/?p=787</guid>
		<description><![CDATA[На работе столкнулись с &#8220;особенностью&#8221; работы jQuery.live(), на которую хотелось бы обратить внимание, потому как, судя по всему, отнюдь не все о ней знают (и в результате чего пишут неработающий код). Итак, простой пример - навешивание двух событий на один и тот же элемент: &#60;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&#62; &#60;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>На <a href="http://waysgo.com/">работе</a> столкнулись с &#8220;особенностью&#8221; работы <a href="http://api.jquery.com/live/">jQuery.live()</a>, на которую хотелось бы обратить внимание, потому как, судя по всему, отнюдь не все о ней знают (и в результате чего пишут неработающий код).</p>
<p>Итак, простой пример - навешивание двух событий на один и тот же элемент:</p>
<pre><code class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;
&lt;head&gt;
  &lt;meta http-equiv="Content-type" content="text/html; charset=UTF-8" /&gt;
  &lt;title&gt;jQuery.live() test page&lt;/title&gt;
  &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript"&gt;
  jQuery(function() {
    $("a").bind("click", function(e) {
      alert("a");
      return false;
    });
    $("a").bind("click", function(e) {
      alert("b");
      return false;
    });
  });
  &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;a href="http://blog.fxposter.org/"&gt;Блог FX-а&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>Пример можно посмотреть <a href="http://blog.fxposter.org/wp-content/uploads/2010/06/test.html">здесь</a>. В результате клика на ссылку - получаем 2 alert-а, всё хорошо, ожидаемо и предсказуемо.</p>
<p>Переписываем код для работы с jQuery.live(). Для тех, кто в танке - live() вешает событие не на сам элемент, а на document. В результате <a href="http://www.quirksmode.org/js/events_order.html">bubbling-а</a> событие, которое произошло над каким-либо элементом поднимается вверх по <a href="http://ru.wikipedia.org/wiki/Document_Object_Model">DOM-дереву</a> и соответственно вызывает обработчики всех элементов, которые оно встретит. Если вы и этого не знали - то вам не нужно читать мой блог, а пора идти и покупать книгу по JavaScript-у (мне, кстати, тоже давно пора, но всё никак не соберусь). Итак, в конце концов событие доходит до document-а и обработчики вызываются у него. Обработчик, который устанавливает jQuery.live() проверяет - соответствует ли event.target (а именно здесь хранится обьект DOM-дерева, с которым произошло событие) соответствующему селектору (в данном случае - это селектор &#8220;a&#8221;) и если соответствует - то выполняет обработчик.</p>
<p>Преимущества и недостатки - это тема отдельной статьи. Если не уклонятся в сторону оптимизации, то основным преимуществом, на мой взгляд, является тот факт, что обработчики, навешенные live()-ом будут запускаться даже для элементов, которые были динамически добавлены на страницу, в отличии от <a href="http://api.jquery.com/bind/">bind()</a>-обработчиков, которые на эти элементы нужно будет навешивать вручную (если непонятно, почему это работает именно так - читаем предыдущий абзац, если все равно непонятно - идем покупать всё ту же книгу).</p>
<p>Далее - зачем нужен &#8220;return false&#8221; в конце обработчика? Он предотвращает от того, чтобы вызывалось действие по умолчанию (в данном случае - переход по ссылке и событие не поднималось выше). Чаще всего JS-разработчики вообще не думают о bubbling-е и под &#8220;return false&#8221; понимают только &#8220;отмену действия по умолчанию&#8221;, ну или они вообще не знают, что именно происходит и пишут &#8220;return false&#8221;, потому что так работает.</p>
<p>Такое отношение jQuery частенько прощает. Но не в случае с live()-методом. Попробуем запустить следующий <a href="http://blog.fxposter.org/wp-content/uploads/2010/06/test2.html">пример</a>:</p>
<pre><code class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;
&lt;head&gt;
  &lt;meta http-equiv="Content-type" content="text/html; charset=UTF-8" /&gt;
  &lt;title&gt;jQuery.live() test page&lt;/title&gt;
  &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript"&gt;
  jQuery(function() {
    $("a").live("click", function(e) {
      alert("a");
      return false;
    });
    $("a").live("click", function(e) {
      alert("b");
      return false;
    });
  });
  &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;a href="http://blog.fxposter.org/"&gt;Блог FX-а&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>В результате клика теперь выскакивает только один alert. Пора обратится к <a href="http://api.jquery.com/live/">документации</a>:</p>
<blockquote><p># To stop further handlers from executing after one bound using .live(), the handler must return false. Calling .stopPropagation()  will not accomplish this.</p></blockquote>
<p>Хаха. В данном случае jQuery интерпретирует false &#8220;несколько иначе&#8221;. :)</p>
<p>Для того, чтобы &#8220;пофиксить&#8221; подобный баг нужно обратится все к тому же bubbling-у и обработке событий и сделать именно то, что предполагается разработчиком - &#8220;отменить действие по умолчанию&#8221;. Это делается с помощью метода <a href="https://developer.mozilla.org/en/DOM/event.preventDefault">event.preventDefault()</a> (<a href="http://blog.fxposter.org/wp-content/uploads/2010/06/test3.html">пример</a>):</p>
<pre><code class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;
&lt;head&gt;
  &lt;meta http-equiv="Content-type" content="text/html; charset=UTF-8" /&gt;
  &lt;title&gt;jQuery.live() test page&lt;/title&gt;
  &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript"&gt;
  jQuery(function() {
    $("a").live("click", function(e) {
      alert("a");
      e.preventDefault();
    });
    $("a").live("click", function(e) {
      alert("b");
      e.preventDefault();
    });
  });
  &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;a href="http://blog.fxposter.org/"&gt;Блог FX-а&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>И самое главное (барабанная дробь!) - при использовании bind() для навешивания обработчиков preventDefault() тоже можно использовать!</p>
<p>Наткнулись мы на эту &#8220;фичу&#8221;, когда у нас почему-то перестали вызываться <strong>некоторые</strong> обработчики</p>
<p>Напоследок, замечу еще одно - элемент, на который навешено хотя бы один обработчик события через bind() с &#8220;правильно работающим return false&#8221;, никогда не будет вызывать никакие live()-события. ;)</p>
<p>Так что будьте бдительны и не забывайте об особенностях обработки событий в JS. Удачи.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2010/06/16/jquery-live-method/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>jQuery, AJAX и CP1251</title>
		<link>http://blog.fxposter.org/2008/11/28/jquery-ajax-and-cp1251/</link>
		<comments>http://blog.fxposter.org/2008/11/28/jquery-ajax-and-cp1251/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 22:05:15 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Работа]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[CP1251]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/?p=585</guid>
		<description><![CDATA[Да, да, я знаю, что в наш век все уже давно перешли на использование utf-8 при построении веб-сайтов, но остались еще и такие, которые пользуються &#8220;допотопными&#8221;, &#8220;отстойными&#8221;, и вообще &#8220;не-тру&#8221; кодировками типа CP1251 (также известной как Windows-1251), KOI8-R и прочих. Ни для кого ни секрет, что кодировкой получаемых через Ajax данных по-умолчанию принимается UTF-8. Не [...]]]></description>
			<content:encoded><![CDATA[<p>Да, да, я знаю, что в наш век все уже давно перешли на использование utf-8 при построении веб-сайтов, но остались еще и такие, которые пользуються &#8220;допотопными&#8221;, &#8220;отстойными&#8221;, и вообще &#8220;не-тру&#8221; кодировками типа CP1251 (также известной как Windows-1251), KOI8-R и прочих.</p>
<p>Ни для кого ни секрет, что кодировкой получаемых через Ajax данных по-умолчанию принимается UTF-8. Не все знают, что это умолчание можно изменить, указав кодировку явно через заголовок &#8220;Content-Type: text/html; charset=cp1251&#8243;. Сегодня вот столкнулся с интересным багом, на который убил довольно много времени.</p>
<p>Сервер отдает некоторый текст по запросу (ajax) в кодировке CP1251, предварительно установив соответствующий заголовок - &#8220;Content-Type: text/html; charset=cp1251&#8243;. На клиенте использовалась библиотека jQuery:</p>
<pre><code class="javascript">$('#books').load('books.php', {action: 'list'});</code></pre>
<p>Всё работало замечательно&#8230; До тех пор, пока я не открыл страничку в IE7. Как ни странно, но ничего не загрузилось. После длительных раздумий, установки alert-ов куда нужно, и куда нет код был заменен следующим кодом:</p>
<pre><code class="javascript">$.ajax({
  method: 'get',
  url: 'books.php',
  success: function(data) {
    $('#books').html(data);
  },
  error: function(xhr, textStatus, errorThrown) {
    alert(textStatus);
  },
  data: {action: 'list'}
});</code></pre>
<p>В FF всё продолжало работать, а вот IE начал выдавать странную надпись &#8220;parsererror&#8221;. Гугление никаких результатов не дало - ни одного похожего случая&#8230; После, примерно, 10 минут попыток &#8220;запустить&#8221; страничку в IE, что-то меня дернуло посмотреть на серверный код. Глаза сразу упали на строку установки Content-Type-а. Недолго думая, я поставил charset=utf-8, и, о чудо, IE загрузил всё как положено (правда в неправильной кодировке, но всё же - уже плюс). Догадавшись в чем может быть дело, я установил кодировку в &#8220;windows-1251&#8243;, после чего всё заработало на ура.</p>
<p>Собственно, мораль сей басни такова - юзайте, люди, юникод, и будет вам счастье.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2008/11/28/jquery-ajax-and-cp1251/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>jQuery 1.2.6 Release Notes</title>
		<link>http://blog.fxposter.org/2008/06/03/jquery-126-release-notes/</link>
		<comments>http://blog.fxposter.org/2008/06/03/jquery-126-release-notes/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 17:44:31 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/?p=435</guid>
		<description><![CDATA[После релиза jQuery 1.2.6 долгое время раздел Release Notes пустовал. Сегодня вот заметил, что его наконец заполнили. Из улучшений: Глобальное ускорение работа с событиями ускорена более чем в два раза селекторы ускорены на 13% .offset() ускорен на 21% работа с CSS (.css()) ускорена на четверть Кое-что улучшено, кое-что добавлено, вроде в API ничего не изменено]]></description>
			<content:encoded><![CDATA[<p>После релиза jQuery 1.2.6 долгое время раздел <a href="http://docs.jquery.com/Release:jQuery_1.2.6">Release Notes</a> пустовал. Сегодня вот заметил, что его наконец заполнили.</p>
<p>Из улучшений:</p>
<ul>
<li>Глобальное ускорение
<ul>
<li>работа с событиями ускорена более чем в два раза</li>
<li>селекторы ускорены на 13%</li>
<li>.offset() ускорен на 21%</li>
<li>работа с CSS (.css()) ускорена на четверть</li>
</ul>
</li>
<li>Кое-что улучшено, кое-что добавлено, вроде в API ничего не изменено</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2008/06/03/jquery-126-release-notes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Вышел jQuery UI 1.5 RC1</title>
		<link>http://blog.fxposter.org/2008/06/03/jquery-ui-15-rc1/</link>
		<comments>http://blog.fxposter.org/2008/06/03/jquery-ui-15-rc1/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 21:24:42 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/?p=434</guid>
		<description><![CDATA[Как сообщает нам наш официальный источник - вышел первый релиз-кандидат jQuery UI - набора виджетов и визуальных эффектов для известного в узких кругах JS-фреймворка jQuery. Как утверждает источник, RC1 довольно стабилен, а точнее - это самая стабильная версия из тех, которые вообще выпускались. :) Так что - спешите обновляться. Ах да, чуть не забыл - [...]]]></description>
			<content:encoded><![CDATA[<p>Как сообщает нам наш официальный источник - <a href="http://jquery.com/blog/2008/06/02/jquery-ui-15-release-candidate-were-getting-excited/">вышел первый релиз-кандидат jQuery UI</a> - набора виджетов и визуальных эффектов для известного в узких кругах JS-фреймворка jQuery.</p>
<p>Как утверждает источник, RC1 довольно стабилен, а точнее - это самая стабильная версия из тех, которые вообще выпускались. :) Так что - <a href="http://ui.jquery.com/download">спешите обновляться</a>.</p>
<p>Ах да, чуть не забыл - в некоторых местах поменялось API (в draggable и resizable модулях так точно поменялось), так что будьте всё же осторожны и предусмотрительны.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2008/06/03/jquery-ui-15-rc1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Используем Google AJAX Libraries API</title>
		<link>http://blog.fxposter.org/2008/05/29/using-google-ajax-libraries-api/</link>
		<comments>http://blog.fxposter.org/2008/05/29/using-google-ajax-libraries-api/#comments</comments>
		<pubDate>Thu, 29 May 2008 00:41:15 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/?p=433</guid>
		<description><![CDATA[Авось, кто-то еще не догадался&#8230; :) Самый простой способ использования своих скриптов совместно с Google AJAX Libraries API: google.load("jquery", "1"); google.setOnLoadCallback(function() { $('&#60;script type="text/javascript" src="_url_вашего_скрипта_"&#62;&#60;/script&#62;').appendTo('head'); $('&#60;script type="text/javascript" src="_url_вашего_другого_скрипта_"&#62;&#60;/script&#62;').appendTo('head'); // ... }); Аналогичным образом подключаются, например, плагины для jQuery.]]></description>
			<content:encoded><![CDATA[<p>Авось, кто-то еще не догадался&#8230; :)</p>
<p>Самый простой способ использования своих скриптов совместно с Google AJAX Libraries API:</p>
<pre><code class="javascript">google.load("jquery", "1");

google.setOnLoadCallback(function() {
  $('&lt;script type="text/javascript" src="_url_вашего_скрипта_"&gt;&lt;/script&gt;').appendTo('head');
  $('&lt;script type="text/javascript" src="_url_вашего_другого_скрипта_"&gt;&lt;/script&gt;').appendTo('head');
  // ...
});</code></pre>
<p>Аналогичным образом подключаются, например, плагины для jQuery.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2008/05/29/using-google-ajax-libraries-api/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JQuery Dialogs == nyroModal</title>
		<link>http://blog.fxposter.org/2008/05/06/jquery-dialogs-nyromodal/</link>
		<comments>http://blog.fxposter.org/2008/05/06/jquery-dialogs-nyromodal/#comments</comments>
		<pubDate>Tue, 06 May 2008 19:52:37 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[nyroModal]]></category>
		<category><![CDATA[Thickbox]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/?p=414</guid>
		<description><![CDATA[Давно ничего не писал - как-то не о чем&#8230; Праздники, работа, учеба&#8230; Единственное, что реально интересно из этого списка - это работа, но&#8230; к сожалению, как раз она и &#8220;способствует&#8221; отсутствию статей в этом блоге - её много и на блог времени просто не остается&#8230; А написать, к счастью, есть о чем. :) Сегодня речь [...]]]></description>
			<content:encoded><![CDATA[<p>Давно ничего не писал - как-то не о чем&#8230; Праздники, работа, учеба&#8230; Единственное, что реально интересно из этого списка - это работа, но&#8230; к сожалению, как раз она и &#8220;способствует&#8221; отсутствию статей в этом блоге - её много и на блог времени просто не остается&#8230; А написать, к счастью, есть о чем. :)</p>
<p>Сегодня речь пойдет о так называемых dialog widget&#8217;ах (периодически, слышу, что их также называют js-popup&#8217;ами). Недавно понадобилось реализовать такой функционал в моём &#8220;рабочем&#8221; проекте и стал вопрос об использовании существующих решений.</p>
<p>В проекте я использую <a href="http://jquery.com/">jQuery</a> и, соответственно, выбирал системку, которая базировалась бы на нем. Всё началось с <a href="http://jquery.com/demo/thickbox/">Thickbox&#8217;а</a>, который я довольно долгое время и использовал, но&#8230; Кое-что мне в нем не нравилось изначально:</p>
<ul>
<li>Минимум настроек</li>
<li>Отличие от большинства плагинов jQuery</li>
<li>Отсутствие развития (последняя версия вышла в августе 2007-го года и зависела еще от jQuery 1.1x, хотя и с 1.2 тоже работала нормально)</li>
</ul>
<p>&#8230; в итоге эти недостатки привели ко вполне логичному концу - я не мог реализовать 2 разных &#8220;диалога&#8221; на одной странице не &#8220;вторгаясь&#8221; в сам код Thickbox&#8217;а, причем застрял на мелочи - удиалогов должны были различаться бэкграунды - у одного он должен был быть полностью залит определенным цветом, а второй должен был быть полупрозрачным. Причем в первом случае сделать фон непрозрачным мне пришлось через CSS, хотя гораздо логичнее было бы предоставить эту возможность самой функции создания диалога.</p>
<p>В общем, после недолгих поисков на свет был извлечен молодой, но очень быстро развивающийся<br />
проект &#8220;окошек&#8221; на jQuery, о котором я сегодня и хочу рассказать - это <a href="http://nyromodal.nyrodev.com/">nyroModal</a>. Проекту еще нет и месяца, но основная функциональность там уже реализована (а как по мне - так больше и не нужно), и что самое главное - им очень удобно пользоваться.</p>
<p>Подробное описание (а также демонтрацию возможностей nyroModal) можно посмотреть на <a href="http://nyromodal.nyrodev.com/">странице самого проекта</a>, а я здесь приведу лишь несколько примеров использования.</p>
<p>Самый простой способ, при котором даже не нужно лезть в JavaScript - это присвоение ссылкам класса nyroModal:</p>
<pre><code class="html">&lt;a href="demo.html" class="nyroModal"&gt;Ajax&lt;/a&gt;</code></pre>
<p>Эта ссылка откроет вам файл demo.html в &#8220;окошке&#8221;.</p>
<pre><code class="html">&lt;a href="demo.html#demo" class="nyroModal"&gt;Ajax&lt;/a&gt;</code></pre>
<p>Эта - сделает почти то же самое, только в окошке будет только инфа из блока с id == &#8220;demo&#8221; из файла demo.html.</p>
<pre><code class="html">&lt;a href="#demo" class="nyroModal"&gt;No Ajax!&lt;/a&gt;</code></pre>
<p>А здесь у нас в окно попадет содержимое блока с id == &#8220;demo&#8221; из текущей страницы.</p>
<p>Если же нужны какие-то дополнительные параметры (значения или callback-функции), то здесь уже без &#8220;ручного&#8221; JavaScript&#8217;а не обойтись:</p>
<pre><code class="html">&lt;a href="#demo" id="no-ajax"&gt;No Ajax!&lt;/a&gt;
&lt;script type="text/javascript"&gt;
$('#no-ajax').nyroModal({
  bgColor: '#FFFFFF',
  showBackground: function(elts, settings, callback) {
    // elts.bg.css({opacity:0}).fadeTo(500, 0.75, callback);
    callback();
  },
  hideBackground: function(elts, settings, callback) {
    // elts.bg.fadeOut(300, callback);
    callback();
  }
})
&lt;/script&gt;</code></pre>
<p>Таким образом мы заменим цвет фона на белый + уберем прозрачность и анимацию при появлении/исчезновении фона.</p>
<p>На этом, наверное, будем прощаться. Если остались вопросы - обращайтесь. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2008/05/06/jquery-dialogs-nyromodal/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>IE6 PNG Fix для PrototypeJS</title>
		<link>http://blog.fxposter.org/2008/03/09/ie6-png-fix-for-prototypejs/</link>
		<comments>http://blog.fxposter.org/2008/03/09/ie6-png-fix-for-prototypejs/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 13:33:45 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PrototypeJS]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2008/03/09/ie6-png-fix-for-prototypejs/</guid>
		<description><![CDATA[IE6 очень плохо работает с изображениями в PNG-формате, которые имеют альфа-канал (проще говоря, прозрачность) - он просто не учитывается. Решить проблему довольно просто, самый удобный вариант - воспользоваться &#8220;библиотекой&#8221; jQuery.ifixpng, которая сделает всё за вас. Единственный недостаток (хотя, кому как) - зависимость от jQuery. Тем, кто пользуется другими библиотеками, в частности, PrototypeJS (а именно она [...]]]></description>
			<content:encoded><![CDATA[<p>IE6 очень плохо работает с изображениями в <a href="http://ru.wikipedia.org/wiki/Portable_Network_Graphics">PNG-формате</a>, которые имеют альфа-канал (проще говоря, прозрачность) - он просто не учитывается. Решить проблему довольно просто, самый удобный вариант - воспользоваться &#8220;библиотекой&#8221; <a href="http://jquery.khurshid.com/ifixpng.php">jQuery.ifixpng</a>, которая сделает всё за вас. Единственный недостаток (хотя, кому как) - зависимость от <a href="http://jquery.com/">jQuery</a>. Тем, кто пользуется другими библиотеками, в частности, <a href="http://prototypejs.org/">PrototypeJS</a> (а именно она по умолчанию используется в таких фреймворках как <a href="http://www.rubyonrails.org/">RubyOnRails</a> и <a href="http://www.symfony-project.org/">Symfony</a>), воспользоваться этой &#8220;библиотекой&#8221; не получится. Именно для них я и попытался переписать эту библиотеку.</p>
<pre><code class="javascript">Prototype.Browser.Version = (navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1];
Prototype.FixPNG = { Pixel: 'images/pixel.gif' };

Element.addMethods({
  fixpng: (Prototype.Browser.IE &amp;&amp; Prototype.Browser.Version &lt; 7) ? function(element) {
    function fixPosition(element) { if(element.style.position != 'absolute') element.style.position == 'relative'; }
    function filter(src) { return "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='" + src + "')"; }
    var elementName = element.nodeName.toLowerCase();
    if(elementName == 'img' || elementName == 'input') {
      if(element.src &amp;&amp; element.src.match(/.*\.png([?].*)?$/i)) {
        element.setStyle({
          filter: filter(element.src),
          width: element.getWidth(),
          height: element.getHeight()
        });
        element.src = Prototype.FixPNG.Pixel;
        fixPosition(element);
      }
    } else {
      var image = element.currentStyle.backgroundImage;
      if (image.match(/^url\(["']?(.*\.png([?].*)?)["']?\)$/i)) {
        element.setStyle({
          filter: filter(RegExp.$1),
          backgroundImage: "none"
        });
        element.children().each(fixPosition);
      }
    }
  } : function(element) {}
});</code></pre>
<p>Зависимости:</p>
<ul>
<li>Библиотека PrototypeJS</li>
<li>В директории images должен лежать &#8220;пустой&#8221; файл pixel.gif (его можно взять <a href="http://jquery.khurshid.com/images/pixel.gif">здесь</a>, или, если вас не устраивает такое расположение файла - просто измените переменную Prototype.FixPNG.Pixel)</li>
</ul>
<p>Пример использования:</p>
<pre><code class="javascript">Event.observe(window, 'load', function() {
  $$('.test, #test').each(function(element){ element.fixpng() });
}, false);</code></pre>
<p><em><strong>PS</strong>. Также советую почитать раздел Known Limitations на странице <a href="http://jquery.khurshid.com/ifixpng.php">jQuery.ifixpng</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2008/03/09/ie6-png-fix-for-prototypejs/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: blog.fxposter.org @ 2012-02-10 05:41:24 -->
