Я вот, например, не нашел в v8cgi удобного способа подключения файлов. Он их непонятно где ищет. В этом плане GLUEscript gluescript.sourceforge.net/ удобней, он умеет брать файлы относительно текущего, а не того, который запустили (банальщина, казалось бы). Автор glue обещает в скором времени перевести его на TraceMonkey (щас SpiderMonkey), тогда скорость может быть сопоставима с v8. Да и расширения языка у мозилы покруче будут, почти Python ))). Но у glue с библиотеками похуже.
NaN — это такое число (typeof w), которое не равно никакому другому числу, даже самому себе. Для проверки на NaN есть функция isNaN, которая по сути является
function isNaN(x) { return x != x; }
Такое в браузере делать надо, зачем сервер зря напрягать.
<img src="путь к картинке" onerror="alert('Тут я как бы сообщаю, что картинка по какой-либо причине не хочет грузиться, хотя можно, например, подсунуть дефолтную картинку.')">
Ну во-первых, не функцию, а ее скоп. Во-вторых, где же тут утечка? Утечка — это когда в памяти лежит что-то, что не используется, в моем примере все используется. Ну и в-третьих, пример слишком простой, чтобы о нем спорить.
Данный подход полезен, когда в функции нужно выполнять кучу условий, параметры которых не меняются в течение работы скрипта (обеспечение кроссбраузерности, например). Вот здесь script.shabunc.org/? p=33 хорошо описано.
Какие утечки? Если вы переменную будете хранить в свойстве, а не внутри функции, она меньше места от этого занимать не будет. Плюс недоступность переменной извне (для эстетов).
>Во вторых библиотека jQuery позволяет говорить что поведение полоски будет одинаковое во всех браузерах.
Библиотека jQuery в данном случае говорит лишь о том, что вы не знаете толком JavaScript. Без нее функция будет практически та же самая (хотя можно и короче), а работать будет быстрее.
Хороший наглядный пример. Там на одной странице подключается 48 js-файлов и 12 css-файлов. Все, разумеется, кэшируются браузером и обновляются не так часто, но при каждой загрузке браузер вынужден делать 60 http-запросов, чтобы проверить, не изменился ли какой-нибудь файл.
Там щас совсем страшненькая, но рабочая, версия валяется. Щас есть отрефакторенная, но не доходят руки выложить.
Почему-то никто из комментаторов не затрагивает вопрос поддержки больших файлов. В файле на пару тысяч строк трудновато ориентироваться. Если же не использовать автоматическую сборку, то при создании нового файла нужно лезть в шаблон, который зачастую лежит в другом месте, а нередко и поддерживается другим человеком.
По поводу подгрузки большого скрипта при первом заходе: а никто не заставляет делать сборку для всего сайта, можно сделать сборки для каждой страницы в отдельности и/или для групп страниц.
Вообще, в JsProcessor'е директива //#include(_once) не единственная вкусность. Есть еще //#define, с помощью которого можно не только определять константы (по типу С), а еще и брать переменные из php и из окружения (этакий шаблонизатор, не портящий js-код). А для больших файлов, которые, тем не менее, логически разбивать некуда (методы для работы со строками, например) есть директива //#label, позволяющая отмечать участки кода и подгружать затем только нужный участок.
И все это работает на реальном сайте, напичканном js-скриптами, и проверено временем. Вот только бы еще //#if реализовать для условной сборки.
В ИЕ и в остальных браузерах выдаст разные результаты, т.к. они до сих пор не знают, как работает стандартный forEach.
var w = parseInt(«q»);
alert(w==w);
alert(w!=w);
NaN — это такое число (typeof w), которое не равно никакому другому числу, даже самому себе. Для проверки на NaN есть функция isNaN, которая по сути является
function isNaN(x) { return x != x; }
<img src="путь к картинке" onerror="alert('Тут я как бы сообщаю, что картинка по какой-либо причине не хочет грузиться, хотя можно, например, подсунуть дефолтную картинку.')">
А зачем вам на одной странице и Mootools, и ExtJS?
javascript:window.open('http://chat.ru/' + window.location.href); void(0);
Данный подход полезен, когда в функции нужно выполнять кучу условий, параметры которых не меняются в течение работы скрипта (обеспечение кроссбраузерности, например). Вот здесь script.shabunc.org/? p=33 хорошо описано.
function countlt(reset) {
var cnt = 0;
countlt = function(reset) {
if (reset) cnt = 0;
return cnt++;
};
return countlt(reset);
}
Библиотека jQuery в данном случае говорит лишь о том, что вы не знаете толком JavaScript. Без нее функция будет практически та же самая (хотя можно и короче), а работать будет быстрее.
$jsprocessor->assign('var', 'value');
В js
//#define FROM_PHP $var
alert(FROM_PHP);
JavaScript в результате
alert('value');
Почему-то никто из комментаторов не затрагивает вопрос поддержки больших файлов. В файле на пару тысяч строк трудновато ориентироваться. Если же не использовать автоматическую сборку, то при создании нового файла нужно лезть в шаблон, который зачастую лежит в другом месте, а нередко и поддерживается другим человеком.
По поводу подгрузки большого скрипта при первом заходе: а никто не заставляет делать сборку для всего сайта, можно сделать сборки для каждой страницы в отдельности и/или для групп страниц.
Вообще, в JsProcessor'е директива //#include(_once) не единственная вкусность. Есть еще //#define, с помощью которого можно не только определять константы (по типу С), а еще и брать переменные из php и из окружения (этакий шаблонизатор, не портящий js-код). А для больших файлов, которые, тем не менее, логически разбивать некуда (методы для работы со строками, например) есть директива //#label, позволяющая отмечать участки кода и подгружать затем только нужный участок.
И все это работает на реальном сайте, напичканном js-скриптами, и проверено временем. Вот только бы еще //#if реализовать для условной сборки.