<?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>JSToolbox - все о JavaScript &#187; Разное</title>
	<atom:link href="http://www.jstoolbox.com/category/raznoe/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jstoolbox.com</link>
	<description>Блог о программировании вообще и о JavaScript в частности, уроки, статьи, заметки, база знаний.</description>
	<lastBuildDate>Mon, 07 Mar 2011 18:19:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Знаменательное событие</title>
		<link>http://www.jstoolbox.com/2009/02/09/znamenatelnoe-sobytie/</link>
		<comments>http://www.jstoolbox.com/2009/02/09/znamenatelnoe-sobytie/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 23:53:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/?p=406</guid>
		<description><![CDATA[14 февраля 2009 года в 00 часов 31 минуту и 30 секунд произойдет самое знаменательное событие в истории человечества (шутка конечно же   ) &#8211; таймстамп Unix, который отсчитывает свое время от 1 января 1970 года станет равным 1234567890. Замечательная новость для гиков   .
Дабы проверить достоверность этого утверждения, наберите в консоли Perl:

perl [...]]]></description>
			<content:encoded><![CDATA[<p>14 февраля 2009 года в 00 часов 31 минуту и 30 секунд произойдет самое знаменательное событие в истории человечества (шутка конечно же <img src='http://www.jstoolbox.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) &#8211; таймстамп Unix, который отсчитывает свое время от 1 января 1970 года станет равным <strong>1234567890</strong>. Замечательная новость для гиков <img src='http://www.jstoolbox.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<p>Дабы проверить достоверность этого утверждения, наберите в консоли Perl:</p>
<pre class="prettyprint">
perl -e "print scalar localtime(1234567890)"
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2009/02/09/znamenatelnoe-sobytie/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Как назначать стили в зависимости от того, включен JavaScript или нет</title>
		<link>http://www.jstoolbox.com/2009/01/10/avoid-flashing-content/</link>
		<comments>http://www.jstoolbox.com/2009/01/10/avoid-flashing-content/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 00:05:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/?p=342</guid>
		<description><![CDATA[<p>Совсем недавно случайно нашел <a href="http://www.learningjquery.com/2008/10/1-awesome-way-to-avoid-the-not-so-excellent-flash-of-amazing-unstyled-content" title="1 (Awesome) Way To Avoid the (Not So Excellent) Flash of (Amazing) Unstyled Content">замечательное решение</a> одной небольшой проблемы, которая давно мозолила глаза. Причем решение из разряда таких, о которых думаешь: "Как это я раньше о таком не догадался...".</p>
<p>Итак суть проблемы - на странице имеется панель (на подобие <a href="http://www.jstoolbox.com/demo/exp-panel-moo/index.html">этой</a>), которая открывается/закрывается при щелчке на её заголовке. Причем при загрузке страницы, то есть в самом начале, она должна быть в закрытом состоянии.</p>]]></description>
			<content:encoded><![CDATA[<p>Совсем недавно случайно нашел <a href="http://www.learningjquery.com/2008/10/1-awesome-way-to-avoid-the-not-so-excellent-flash-of-amazing-unstyled-content" title="1 (Awesome) Way To Avoid the (Not So Excellent) Flash of (Amazing) Unstyled Content">замечательное решение</a> одной небольшой проблемы, которая давно мозолила глаза. Причем решение из разряда таких, о которых думаешь: &#8220;Как это я раньше о таком не догадался&#8230;&#8221;.</p>
<p>Итак суть проблемы &#8211; на странице имеется панель (на подобие <a href="http://www.jstoolbox.com/demo/exp-panel-moo/index.html">этой</a>), которая открывается/закрывается при щелчке на её заголовке. Причем при загрузке страницы, то есть в самом начале, она должна быть в закрытом состоянии. Проблема в том, что нельзя просто так взять, и спрятать панель стилями, установив для неё <em>display:hidden</em>, ибо если у пользователя в браузере отключен JavaScript, то он вообще не увидит содержимого этой панели (не забываем, что скрипт должен быть ненавязчивым). А если же прятать содержимое при помощи JavaScript (например так: $(&#8217;#panel&#8217;).hide() ), то всякий раз при загрузке страницы будет происходить мелькание &#8211; то есть во время загрузки панель открыта, а как только страница загружена, она закрывается (кстати такой &#8220;баг&#8221; можно наблюдать на главной странице <a href="http://www.sape.ru/">sape.ru</a> под цифрами в центре страницы). Я также создал <a href="/demo/jsflashing.php">страницу где можно это посмотреть</a> (конечно же вы не увидите мелькание если у вас супер быстрый интернет <img src='http://www.jstoolbox.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<p><span id="more-342"></span></p>
<p>Замечательное решение для этой проблемы зключается в том, чтобы использовать и стили и яваскрипт. В самом верху страницы нужно поставить всего одну строку кода:</p>
<pre class="prettyprint">
document.getElementsByTagName('html')[0].className = 'JS';
</pre>
<p>Улавливаете суть? Если в браузере включен JavaScript, то для элемента <em>html</em> будет установлено имя класса <em>JS</em>, а значит мы сможем назначать стили элементам страницы в зависимости от того, включен ли JavaScript или нет. Итак, прячем (закрываем) панель:</p>
<pre class="prettyprint">
.JS #panel {display:none}
</pre>
<p>Панель закрывается и открывается путем назначения ей стиля <em>display</em>, поэтому начальным положением ставим значение <em>none</em>. Созданный мною пример теперь будет работать так: <a href="/demo/jsflashing-fixed.php">смотреть пример</a>.</p>
<p>Вот и все&#8230; Теперь неприятное мерцание не будет никого раздражать. Конечно, такие недостатки, как мелькание при загрузке страниц, нельзя назвать серьезной проблемой &#8211; это скорее мелочь, однако внимание к мелочам бывает очень даже полезным <img src='http://www.jstoolbox.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="postLinks">
<strong>Спонсор статьи:</strong><br />
Швейцарские часы &#8211; <a href="http://www.kupi-chasi.ru/Swiss_Vacheron_Constantin_ETA.html">vacheron constantin</a><br/><a href="http://prodam.slando.kz/kazakhstan/5894_1.html">Отдам даром</a>, приму в дар &#8211; объявления Казахстан<br/>Объявления &#8211; <a href="http://auto.slando.od.ua/">продажа автомобилей в Одессе</a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2009/01/10/avoid-flashing-content/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Определение браузера Google Chrome и его версии на JavaScript</title>
		<link>http://www.jstoolbox.com/2008/09/04/google_chrome_opredelenije/</link>
		<comments>http://www.jstoolbox.com/2008/09/04/google_chrome_opredelenije/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 20:36:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/09/04/google_chrome_opredelenije/</guid>
		<description><![CDATA[Определять тип браузера нужно не так уж и часто, но все же приходится. И в первую очередь из-за глюков и несовместимостей некоторых из них, когда для какого-либо браузера что-то нужно сделать по-особенному. И поскольку вчера в полку браузеров прибавление &#8211; вышел Google Chrome, то теоретически возможна и новая головная боль, в том случае, если если [...]]]></description>
			<content:encoded><![CDATA[<p>Определять тип браузера нужно не так уж и часто, но все же приходится. И в первую очередь из-за глюков и несовместимостей некоторых из них, когда для какого-либо браузера что-то нужно сделать по-особенному. И поскольку вчера в полку браузеров прибавление &#8211; вышел <a href="http://www.google.com/chrome" title="Google  Chrome">Google Chrome</a>, то теоретически возможна и новая головная боль, в том случае, если если он будет несколько &#8220;глюкавым&#8221;.</p>
<p>Итак, тип браузера можно посмотреть в строке <strong>User Agent</strong>. Для Google Chrome она выглядит следующим образом:</p>
<pre class="prettyprint">
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
</pre>
<p>Следовательно, проверку выполняем следующим образом:</p>
<pre class="prettyprint">
var is_chrome = false, chrome_version = false;
if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
	is_chrome = true;
	chrome_version = navigator.userAgent.replace(/^.*Chrome\/([\d\.]+).*$/i, '$1')
}
</pre>
<p>В результате переменные <strong>is_chrome</strong> и <strong>chrome_version</strong> будут указывать на то, является ли браузер Google Chrome и какая у него версия.</p>
<p>Думаю, пока рано бояться багов Хрома, но заранее знать как с ними бороться все же не помешает.</p>
<p>Успехов!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/09/04/google_chrome_opredelenije/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>6 способов сломать Internet Explorer</title>
		<link>http://www.jstoolbox.com/2008/06/23/6-sposobov-slomat-internet-explorer/</link>
		<comments>http://www.jstoolbox.com/2008/06/23/6-sposobov-slomat-internet-explorer/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 19:59:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/06/23/6-sposobov-slomat-internet-explorer/</guid>
		<description><![CDATA[Думаю всякий разработчик сталкивался с многочисленными проблемами и багами при разработке сайтов под IE 6. С прискорбием отмечу тот факт, что в ходе преодоления всех этих проблем было зверски убито огромное количество времени. Если же вам, уважаемые коллеги разработчики, все же захочется отомстить за это тем, кто еще пользуется IE 6, то вам возможно пригодятся [...]]]></description>
			<content:encoded><![CDATA[<p>Думаю всякий разработчик сталкивался с многочисленными проблемами и багами при разработке сайтов под IE 6. С прискорбием отмечу тот факт, что в ходе преодоления всех этих проблем было зверски убито огромное количество времени. Если же вам, уважаемые коллеги разработчики, все же захочется отомстить за это тем, кто еще пользуется IE 6, то вам возможно пригодятся приведенные ниже советы. Эти 6 способов являются кодами JavaScript, HTML, CSS, которые, присутствуя в веб странице, вызывают аварийное завершение работы Internet Explorer 6 (последний совет актуален также для седьмой версии):</p>
<p><span id="more-158"></span></p>
<div class="entry_picture" style="width:476px">
<img src='http://www.jstoolbox.com/wp-content/uploads/2008/06/ie-crash.png' alt='Аварийное завершение работы Internet Explorer' />
</div>
<p>Итак, первый метод &#8211; следующий цикл for:</p>
<pre class="prettyprint">
&lt;script>for (x in document.write) { document.write(x);}&lt;/script>
</pre>
<p>Метод номер два, обнаруженный в прошлом году:</p>
<pre class="prettyprint">
&lt;style>*{position:relative}&lt;/style>&lt;table>&lt;input>&lt;/table>
</pre>
<p>Метод номер три &#8211; самый короткий из всех:</p>
<pre class="prettyprint">
&lt;STYLE>@;/*
</pre>
<p>Метод четыре &#8211; самый длинный из всех:</p>
<pre class="prettyprint">
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
&lt;html>
  &lt;head>
    &lt;title>CRASH-IE&lt;/title>
    &lt;style type="text/css">
      html, body {
      overflow: hidden;
      scrollbar-base-color: #330066;
      } 

      .crash {
      position:absolute;
      left:200px;
      top:200px;
      width:200px;
      }
    &lt;/style>

    &lt;script type="text/javascript">
    function galgenfrist() {
        window.setTimeout('crashIE();',1000);
    }

    function crashIE() {
        var moveNode = document.getElementById("move");
        if(moveNode) {
            moveNode.style.top = "100px";
            moveNode.style.left = "200px";
        }
    }
    &lt;/script>
&lt;/head> 

&lt;body onload="galgenfrist();">

    &lt;h1>CRASH-IE&lt;/h1>
    &lt;div id="move" class="crash">
    &lt;table>
        &lt;tbody>
        &lt;tr>
        &lt;td>
              &lt;textarea>&lt;/textarea>
        &lt;/td>
        &lt;/tr>
        &lt;/tbody>
    &lt;/table>
    &lt;/div> 

&lt;/body>
&lt;/html>
</pre>
<p>Метод номер пять &#8211; такое можно написать и случайно <img src='http://www.jstoolbox.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  :</p>
<pre class="prettyprint">
&lt;body onLoad="window()">
</pre>
<p>Ну и последний, шестой метод уничтожает (по идее) Internet Explorer 7:</p>
<pre class="prettyprint">
function getX( oElement ) {
    var iReturnValue = 0;
    while( oElement != null ) {
        iReturnValue += oElement.offsetLeft;
        oElement = oElement.offsetParent;
    }
    return iReturnValue;
}
</pre>
<p>На этом все. Ломайте на здоровье <img src='http://www.jstoolbox.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.catswhocode.com/blog/web-development/6-html-and-javascript-codes-to-crash-ie6-14" title="Источник статьи" class="external">Источник</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/06/23/6-sposobov-slomat-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>SoundManager &#8211; JavaScript API для воспроизведения звука</title>
		<link>http://www.jstoolbox.com/2008/04/29/soundmanager-javascript-api-dlya-vosproizvedeniya-zvuka/</link>
		<comments>http://www.jstoolbox.com/2008/04/29/soundmanager-javascript-api-dlya-vosproizvedeniya-zvuka/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 20:46:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[библиотека]]></category>
		<category><![CDATA[звук]]></category>

		<guid isPermaLink="false">http://www.jstoolbox.com/2008/04/29/soundmanager-javascript-api-dlya-vosproizvedeniya-zvuka/</guid>
		<description><![CDATA[Пока что JavaScript не способен самостоятельно воспроизводить звуковые файлы, например mp3. Однако если призвать на помощь технологию Flash, то может получиться очень неплохая связка для работы с аудио. Именно такую библиотеку я совсем недавно обнаружил в сети. Итак, SoundManager &#8211; библиотека, при помощи которой можно добавлять звуковые ролики и управлять ими при помощи JavaScript. Само [...]]]></description>
			<content:encoded><![CDATA[<p>Пока что JavaScript не способен самостоятельно воспроизводить звуковые файлы, например mp3. Однако если призвать на помощь технологию Flash, то может получиться очень неплохая связка для работы с аудио. Именно такую библиотеку я совсем недавно обнаружил в сети. Итак, <a href="http://www.schillmania.com/projects/soundmanager2/">SoundManager</a> &#8211; библиотека, при помощи которой можно добавлять звуковые ролики и управлять ими при помощи JavaScript. Само же воспроизведение звука будет осуществляться маленьким (всего 2,2 К) Flash файлом, который автоматически подгружается библиотекой. Само собой разумеется, что браузер должен поддерживать Flash (не менее 8-й версии).</p>
<p><span id="more-122"></span></p>
<p>Чтобы добавить SoundManager в веб страницу, нужно подключить скрипт <strong>soundmanager2.js</strong>:</p>
<pre class="prettyprint">
&lt;script type="text/javascript" src="soundmanager2.js">&lt;/script>
</pre>
<p>Когда SM2 загрузится и будет готов к работе, он вызовет либо событие <strong>soundManager.onload()</strong> в случае успешной загрузки либо <strong>soundManager.onerror()</strong> в случае ошибки. Если путь к файлу soundmanager2.swf не стандартный, то нужно указать путь к нему следующим образом:</p>
<pre class="prettyprint">
soundManager.url = '../../soundmanager2.swf';
</pre>
<p>Теперь, когда библиотека готова к работе, можно создавать объект &#8220;звук&#8221; и воспроизводить аудио файлы. Простейший способ создать объект и воспроизвести файл в одном вызове:</p>
<pre class="prettyprint">
soundManager.play('mySound','/path/to/some.mp3');
</pre>
<p>Здесь обязательно указать уникальный ID для создаваемого объекта.</p>
<p>Также можно создать объект, чтобы воспроизводить его по необходимости:</p>
<pre class="prettyprint">
// создание объекта "звук"
soundManager.createSound('myNewSound','/path/to/some.mp3');

// установка громкости и воспроизведение
soundManager.play('myNewSound');
soundManager.setVolume('myNewSound',50);
soundManager.setPan('myNewSound',-100);
</pre>
<p>Более полный пример кода:</p>
<pre class="prettyprint">
&lt;script type="text/javascript" src="../../script/soundmanager2.js">&lt;/script>
&lt;script type="text/javascript">
soundManager.url = '../../soundmanager2.swf'; // указываем путь к swf файлу
soundManager.debugMode = true;
soundManager.consoleOnly = false;

soundManager.onload = function() {
  // создаем аудио ролики
  soundManager.createSound('aDrumSound','../mpc/audio/AMB_SN13.mp3');
  soundManager.createSound({
    id: 'mySound',
    url: '../mpc/audio/sound.mp3',
    autoLoad: true
  });
}

function someSound(){
  soundManager.play('mySound');
}
&lt;/script>
</pre>
<p>Здесь, при помощи функций <strong>soundManager.createSound()</strong> создаются два аудио ролика, которым даются уникальные ID. Для их воспроизведения используется функция <strong>soundManager.play()</strong>. При вызове функции <strong>someSound()</strong> будет воспроизводиться ролик <strong>sound.mp3</strong>.</p>
<p>Это всего лишь простой пример. В API имеются функции для управления громкостью, перемоткой и др., можно устанавливать обработчики для событий onload, onfinish, onjustbeforefinishtime и т.д. Также поддерживается потоковое воспроизведение, автозагрузка, автозапуск и многое другое.</p>
<p><a href="http://www.schillmania.com/projects/soundmanager2/demo/basic/" class="demo">смотреть демо</a><a href="http://www.schillmania.com/projects/soundmanager2/#download" class="download" style="margin-left:18px">скачать</a><a href="http://www.schillmania.com/projects/soundmanager2/#soundmanager-api" class="external">API</a></p>
<p>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jstoolbox.com/2008/04/29/soundmanager-javascript-api-dlya-vosproizvedeniya-zvuka/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

