Поиск по метке: JavaScript
jQuery().ready
Многие используют $( document ).ready( fn ) или упрощённую запись $( fn ) для выполнения js-кода по окончанию загрузки DOM-модели страницы. Это удобно и кроссбраузерно, однако результат выполнения следующего кода:
<html>
<head>
<title>Test .ready</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"
type="text/javascript"></script>
<script>$( function() { error.error + 'error'; /* Error :) */ } ); </script>
<script>
$( function() { alert( 'All right' ); } );
alert(2);
</script>
</head>
<body> </body>
</html>
может вас разачаровать. Дело в том, что если одна из поставленных в очередь на .ready функций "заглючит", остальные не выполнятся. Вы не увидете 'All right', только '2'. Т.е. какой-либо мелочный глюк в одном модуле может привести к полной неработоспособности javascript-а на странице.
For in в JavaScript
Встраивая jQuery-дерево (dynatree) на сайт, я столкнулся с 1 нюансом javascript-а, который, возможно, вам ещё не попадался. Оказывается конструкция for [key] in [object] в разных браузерах работает по разному:
a = { 5:5, 3:3, 8:8, 12:12 };
for( var name in a )
{
console.log( name );
}
- Opera 12, Google Chrome: 3 5 8 12 // сортировка по алфавиту
- Firefox: 5 3 8 12 // полное соответствие
Пришлось переписать часть кода :)
Объединение javascript файлов
Эпоха тёплого лампового WEB 1.0 давно прошла, и в последнее время мы имеем дело со страницами, которые кишат так называемой динамичностью. Динамичность может быть обеспечена при помощи JavaScript, VbScript и плагинами вроде Java, Flash, Silverlight. В этой статье я хочу затронуть одну из возможных оптимизаций web-сайта — объединение всех javascript файлов в один.
Javascript: Double → Int32
В Javascript для чисел используется тип double (8 байт, числа с плавающей запятой). Мне понадобилось создать имитацию одного Delphi приложения при помощи JavaScript. В ходе сего процесса я наткнулся на проблему переполнения 2147483647 + 10
- JS (Double): 2147483657
- Delphi (Integer): -2147483639
Создать переменную типа Int в JS нельзя. Но как оказалось привести 2147483657 к - 2147483639 можно без бубнов и плясок добавив побитовое или:
- JS: 2147483647 + 10 | 0 == -2147483639
Спасибо stackoverflow :) Более подробно про логические операторы можно прочесть здесь.
Заметки про MediaWiki #1
Плагины
Плагины (Extentions) - позволяют добавить движку какой-либо дополнительный функционал. Например возможность встраивания в статьи видео с youtube-а. Для установки этого плагина необходимо:
- Закинуть файл (или папку с файлами, что реже) в директорию /extensions
- Открыть файл LocalSettings.php и добавить в конец require_once("$IP/extensions/YouTube.php"); где в скобках указывается главный файл плагина
В случае youtube плагина, видео можно встроить в статью просто применив конструкцию <youtube>ссылка на ролик</youtube> в своей статье. Есть и более функциональные плагины для этой цели, которые поддерживают сразу несколько видео-хостингов, да и к тому же позволяют менять размер встраиваемого объекта, но в моём случае они почему то взбунтовались... В прочем это отдельная история. Рекомендую также установить плагин ParserFunctions, он понадобиться вам для написания шаблонов (мини-программирование), и Cite, который позволит легко и красиво организовать список сносок, разбрасывая их посреди статьи.