
Быстрый поиск
Введите фрагмент названия статьи для поиска

Как скопировать массив на JavaScript
29.05.2013 | Категория: Web-мастеру и не только | Автор: ManHunter
При программировании на JavaScript иногда требуется создать копию массива. Но особенность заключается в том, что в JavaScript массив является объектом, поэтому при использовании оператора присваивания, новой копии создаваться не будет, а просто будет создана ссылка на существующий массив. Если после этого попробовать внести какие-нибудь изменения в любой из этих массивов, то изменения будут внесены сразу в оба. Так получается, потому что фактически это один и тот же объект. Например:Code (JavaScript) : Убрать нумерацию
- // Как хочется сделать, но не получится
- var old_array = ['one', 'two', 'three'];
- var new_array = old_array;
- // Добавляем по одному элементу в исходный и "новый" массив
- old_array.push('banana');
- new_array.push('lemon');
- // Получается вот что
- // old_array = ['one', 'two', 'three', 'banana', 'lemon'];
- // new_array = ['one', 'two', 'three', 'banana', 'lemon'];
Code (JavaScript) : Убрать нумерацию
- // Корректный вариант решения
- var old_array = ['one', 'two', 'three'];
- var new_array = old_array.slice(0);
- // Добавляем по одному элементу в исходный и новый массив
- old_array.push('banana');
- new_array.push('lemon');
- // Теперь все правильно
- // old_array = ['one', 'two', 'three', 'banana'];
- // new_array = ['one', 'two', 'three', 'lemon'];
Просмотров: 4767 | Комментариев: 6

Горизонтальное меню с вкладками на CSS и JavaScript
27.04.2013 | Категория: Web-мастеру и не только | Автор: ManHunter
Сегодня мы будем делать горизонтальное меню с вкладками для размещения на сайте. Но это не обычное навигационное меню, оно делается немного иначе, это меню для отображения различных блоков информации без перехода на другие страницы. Такое горизонтальное меню используется, например, в интернет-мгазинах, когда на одной странице представлено описание товара, фотографии, какие-нибудь дополнительные характеристики, отзывы посетителей и т.д., и вся эта информация переключается как раз таким меню с вкладками.Начнем с проектирования. Нам надо создать в HTML-коде меню с названиями вкладок и блоки с содержимым, которые соответствуют той или иной выбранной вкладке.
Code (HTML) : Убрать нумерацию
- <!-- меню с вкладками -->
- <ul id="menu">
- <li id="goods">Товар</li>
- <li id="descr">Описание</li>
- <li id="foto">Фотография</li>
- <li id="price">Цена</li>
- <li id="shops">Где купить</li>
- </ul>
- <!-- контейнер со страницами -->
- <div id="container">
- <div id="goods_content">Товар</div>
- <div id="price_content">Цена на товар</div>
- <div id="shops_content">Адреса магазинов</div>
- <div id="descr_content">Описание</div>
- <div id="foto_content">Фотографии</div>
- </div>
Читать статью целиком »
Просмотров: 16656 | Комментариев: 15

Загрузка видимых изображений (Lazy Load) на JavaScript
06.08.2012 | Категория: Web-мастеру и не только | Автор: ManHunter

Загрузка видимых изображений (Lazy Load) на JavaScript
"Lazy Load", "ленивая" или "отложенная загрузка" - особая технология работы с веб-страницами, когда загружаются только те изображения, которые находятся в поле зрения пользователя. Остальные картинки не загружаются до тех пор, пока пользователь не прокрутит страницу до их попадания в видимую область. При большом количестве изображений на странице такой трюк значительно повышает скорость загрузки сайта, а также экономит трафик пользователя и заметно снижает нагрузку на ваш сервер. Особенно это актуально при работе с сайтами на планшетных компьютерах и смартфонах.
Читать статью целиком »
Просмотров: 16727 | Комментариев: 12

Защита контента сайта от копирования
05.07.2012 | Категория: Web-мастеру и не только | Автор: ManHunter
Сразу же оговорюсь, что я категорически против использования на практике любых методов, описываемых в этой статье. Любой запрет только раздражает посетителей сайта и вряд ли кто-то захочет вернуться снова на страницу, которая, например, блокирует правую кнопку мышки или требует для просмотра текста включенный JavaScript. Максимум, что я признаю, это пассивная защита контента. Это не говоря о том, что любую защиту в случае реальной необходимости можно без особых проблем обойти. Но тем не менее, активная защита от копирования контента иногда встречается на некоторых сайтах. В этой статье я собрал методы активной защиты, которые встречал на практике.Первый способ, самый простой. Подавление событий выделения текста, движения и клика мышкой, копирования и вызова контекстного меню путем блокировки правой кнопки мыши. Ставится обработчик, который не дает событию всплывать по иерархии DOM и сразу же возвращает флажок отмены:
Code (JavaScript) : Убрать нумерацию
- function nocopy(event) {
- var event = event || window.event;
- if (event.preventDefault) { event.preventDefault(); }
- else { event.returnValue = false; }
- return false;
- }
- document.onmousedown = nocopy;
- document.onmouseup = nocopy;
- document.onmousemove = nocopy;
- document.ondragstart = nocopy;
- document.onselectstart = nocopy;
- document.ontextmenu = nocopy;
- document.oncopy = nocopy;
Читать статью целиком »
Просмотров: 23683 | Комментариев: 27

Новый алгоритм получения Google PageRank
11.10.2011 | Категория: Web-мастеру и не только | Автор: ManHunter
Буквально на днях Google поменял алгоритм, по которому генерировалась ссылка для получения показателей Google PageRank. В результате этого отвалились многие сервисы, вспомогательные программы, сторонние тулбары, счетчики и еще бессчетное количество сеошного барахла. Мне было бы глубоко фиолетово на их проблемы, но у меня на сайте тоже используется система автоматического съема значений Google PR. Поэтому пришлось быстренько адаптироваться к новым условиям. Я установил себе гугловский тулбар, быстренько выпотрошил его и получил алгоритм генерации ссылки для получения Google PageRank. Вот как он выглядит на JavaScript:Code (JavaScript) : Убрать нумерацию
- <script type="text/javascript">
- // Программисты Google явно с юмором :)
- var HASH_SEED = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. "+
- "Yes, I'm talking to you, scammer.";
- // Расчет хэша строки запроса
- awesomeHash = function(a) {
- var b = 16909125;
- for (c = 0; c < a.length; c++) {
- b ^= HASH_SEED.charCodeAt(c % HASH_SEED.length) ^ a.charCodeAt(c);
- b = b >>> 23 | b << 9;
- }
- return '8'+hexEncodeU32(b);
- };
- // Перевод числа в HEX-значение
- hexEncodeU32 = function(a) {
- var b = toHex8(a >>> 24);
- b += toHex8(a >>> 16 & 255);
- b += toHex8(a >>> 8 & 255);
- return b + toHex8(a & 255)
- };
- toHex8 = function(a) {
- return (a < 16 ? "0": "") + a.toString(16)
- };
- // Функция получения ссылки для запроса Google PR
- getPageRankLink = function(a) {
- return 'http://toolbarqueries.google.ru/tbr?features=Rank'+
- '&client=navclient-auto-ff&ch='+awesomeHash(a)+'&q=info:'+
- encodeURIComponent(a);
- }
- </script>
Code (JavaScript) : Убрать нумерацию
- <script type="text/javascript">
- // Пример использования
- st='http://www.manhunter.ru/'
- alert(getPageRankLink(st));
- </script>
Читать статью целиком »
Просмотров: 7246 | Комментариев: 12
