Хорошее замечание: для подобного вида изображений лучше использовать PNG.
А шрифт:
1) Где-то я уже видел что-то похожее
2) Ну стало больше на один свободный шрифт, не более того
3) Кстати да, его можно использовать для гипертекстового векторного фидонета
Честно, я не понимаю гугл. Зачем создавать еще один язык программирования?
1) У них V8 и так быстр, куда уж быстрее.
2) С какой стати остальные браузеры будут поддерживать Dart? Есть же JavaScript.
3) Насколько я помню, на гугле еще Go висит. И насколько выросла его популярность? Даже сам гугл при запросе показывает Go шестым по счёту. Я думаю, Dart постигнет та же участь.
4) Да и люди ленивы. Если до сих пор на IE7-8 сидят, особенно это касается крупных компаний, то про Dart тут и речи не может быть.
5) Разработчики интернетов обещали JavaScript 2.0. И я не сомневаюсь, что он выйдет.
Как клиентский программист, я с вами согласен, что IE можно поддерживать с восьмой версии, но не ниже. Потому что в плане рендеринга страниц восьмая версия, конечно, отстаёт от девятой, но имеет результат гораздно более близкий к ожидаемому. Эта проблема относится к верстальщикам. Огорчает IE и программистов, потому что в своё время IE8 был очень большим продвижением, но всё равно его функционала не хватает для нормальной разработки: постоянно приходится что-то дописывать.
И мне всё равно, что этот комментарий заминусуют. Но поймите же вы, что, идя на уступки в виде поддержки старых браузеров, вы замедляете развитие интернетов!
3. Почитайте, что такое strict mode. Если мне вдруг придётся сделать рекурсивную функцию, то с помощью arguments.callee я не смогу обратиться к текущей анонимной функции. Во-вторых, при отладке я сразу же буду видеть по именам в стеке вызовов, где произошла ошибка. Это, кстати, для меня и есть главная причина писать имена. В-третьих, гляньте пример:
(function init() {
var f = function f() {
alert(f);
},
z = f;
f = 1;
alert(f);
z();
})();
В таком случае внутри функции f переменная f не будет замыканием.
6-7. В заголовке написано — именно для IE8.
9. Признаю фейл с оператором %. И, да, я потерял проверку, когда переписывал эту функцию.
Специально для вас: clip2net.unet.by/page/m341/61867
Просто откройте при включенном интернете.
Сваял по-быстрому, поэтому возможны ошибки. Да и на английский не обижайтесь )
Переменные верхнего регистра у меня обозначают замыкания, недоступные извне.
Если вас бесят конструкции приведенного вида, вы можете переписать их сами — было бы желание.
По поводу хранения ссылок: их можно и не хранить, но тогда при большом количестве элементов при траверсе HTML при обновлении словаря будут страшные тормоза на странице.
А еще у меня совсем не виджеты, а полноценные приложения. И да, архитектура намного сложнее, чем вы можете представить.
Пожалуйста, это ваше собственное желание — писать по IE. Кстати, да, вот вам баянчик.
И давайте не будем мыслить узко. Эта штука может не только языки менять, а текст как вам угодно в принципе. Например, кто-то независимо дописывает тексты в БД, и как только происходит сохранение, то изменения отражаются на клиенте почти моментально (например, с использованием лонг-поллинга или веб-сокетов).
Еще раз для вас:
Суть библиотеки не в замене ключей на их значения, а в изменении текущего значения элемента на новое при изменении словаря. Причём словарь может быть загружен или выгружен в произвольный момент времени.
Совершенно необязательно. Реализация связывания элементов с хэшем ложится на стороннего программиста, который использует эту библиотеку.
Да, можно использовать и приведённый вами пример; можно указывать ключ в атрибутах; можно вообще не указывать ключ, а совершать «накладывание» JavaScript-объекта с ключами на HTML-структуру.
Суть библиотеки не в замене ключей на их значения, а в изменении текущего значения элемента на новое при изменении словаря. Причём словарь может быть загружен или выгружен в произвольный момент времени.
> На стороне сервера нужно все равно подстраивать вмето текста название этих ключей, а потом в js вручную создавать хеш значений
Я не понимаю до конца, что вы здесь имеете в виду.
А применить можно в любом веб-приложении, где необходима локализация.
Подводя итоги, можно сделать вывод, что иногда без функции eval просто не обойтись. И большинство принимают правильное решение: её можно использовать, но чем меньше — тем лучше. От себя хочется добавить ярым противникам eval:
Неважно, как появился код: загружен сторонний скрипт, с помощью Function, с помощью eval — все равно он может быть потенциально опасным. А так называемое зло eval (потенциальный доступ к переменным, медленность работы) преувеличено, потому что всё зависит только от степени понимания программистом тонкостей языка. Если ты быдлокодер, то и без eval наделаешь уязвимостей.
Можно немного дополнить Резига, указав, что при работе с интервалами при блокировке кода методами alert(), prompt(), confirm() в работе браузеров наблюдаются отличия:
setInterval(function(){
alert(1);
},2000)
Получив сообщение через 2 секунды, подождите примерно еще 2 секунды, а затем закройте сообщение. Firefox 10, IE9, Opera 12 мгновенно показывают новое сообщение. Вебкитовские Chrome и Safari ожидают 2 секунды после закрытия, т.е. в них отсчёт интервала запускается только после того, как завершится текущая функция по интервалу. Это неважно в повседневном коде, но может оказаться важным при специализированно разработке (например, очереди ядра).
Связь arguments с именованными параметрами происходит через getter/setter. Так что если мой пример дополнить кодом:
...//для каждой переменной
var a=arguments[0];
delete arguments[0];//необходимо из-за отсутствия флага "настраиваемый"
Object.defineProperty(arguments,"0",{get:function(){return a;},set:function(v){a=v;}});
...
то получится ситуация, описанная вами.
Но смысл в том же: параметры функций также являются локальными переменными.
Это единственное отличие. Но замечание дельное.
Выдержка из книги Д. Флэнагана «JavaScript. Подробное руководство» 5-е изд.:
«Параметры функций также считаются локальными переменными, определенными только в теле этой функции».
А шрифт:
1) Где-то я уже видел что-то похожее
2) Ну стало больше на один свободный шрифт, не более того
3) Кстати да, его можно использовать для гипертекстового векторного фидонета
1) У них V8 и так быстр, куда уж быстрее.
2) С какой стати остальные браузеры будут поддерживать Dart? Есть же JavaScript.
3) Насколько я помню, на гугле еще Go висит. И насколько выросла его популярность? Даже сам гугл при запросе показывает Go шестым по счёту. Я думаю, Dart постигнет та же участь.
4) Да и люди ленивы. Если до сих пор на IE7-8 сидят, особенно это касается крупных компаний, то про Dart тут и речи не может быть.
5) Разработчики интернетов обещали JavaScript 2.0. И я не сомневаюсь, что он выйдет.
поддавайся на уловки @ минусуй
И мне всё равно, что этот комментарий заминусуют. Но поймите же вы, что, идя на уступки в виде поддержки старых браузеров, вы замедляете развитие интернетов!
3. Почитайте, что такое strict mode. Если мне вдруг придётся сделать рекурсивную функцию, то с помощью arguments.callee я не смогу обратиться к текущей анонимной функции. Во-вторых, при отладке я сразу же буду видеть по именам в стеке вызовов, где произошла ошибка. Это, кстати, для меня и есть главная причина писать имена. В-третьих, гляньте пример:
В таком случае внутри функции f переменная f не будет замыканием.
6-7. В заголовке написано — именно для IE8.
9. Признаю фейл с оператором %. И, да, я потерял проверку, когда переписывал эту функцию.
За пункты 5, 8 и 9 ставлю плюс.
Отдельная благодарность будет в статье.
clip2net.unet.by/page/m341/61867
Просто откройте при включенном интернете.
Сваял по-быстрому, поэтому возможны ошибки. Да и на английский не обижайтесь )
Переменные верхнего регистра у меня обозначают замыкания, недоступные извне.
Если вас бесят конструкции приведенного вида, вы можете переписать их сами — было бы желание.
По поводу хранения ссылок: их можно и не хранить, но тогда при большом количестве элементов при траверсе HTML при обновлении словаря будут страшные тормоза на странице.
А еще у меня совсем не виджеты, а полноценные приложения. И да, архитектура намного сложнее, чем вы можете представить.
Пожалуйста, это ваше собственное желание — писать по IE. Кстати, да, вот вам баянчик.
И давайте не будем мыслить узко. Эта штука может не только языки менять, а текст как вам угодно в принципе. Например, кто-то независимо дописывает тексты в БД, и как только происходит сохранение, то изменения отражаются на клиенте почти моментально (например, с использованием лонг-поллинга или веб-сокетов).
Правильно — пересоздайте все элементы на странице и потеряйте обработчики событий на них.
Суть библиотеки не в замене ключей на их значения, а в изменении текущего значения элемента на новое при изменении словаря. Причём словарь может быть загружен или выгружен в произвольный момент времени.
Да, можно использовать и приведённый вами пример; можно указывать ключ в атрибутах; можно вообще не указывать ключ, а совершать «накладывание» JavaScript-объекта с ключами на HTML-структуру.
Суть библиотеки не в замене ключей на их значения, а в изменении текущего значения элемента на новое при изменении словаря. Причём словарь может быть загружен или выгружен в произвольный момент времени.
Я не понимаю до конца, что вы здесь имеете в виду.
А применить можно в любом веб-приложении, где необходима локализация.
От себя хочется добавить ярым противникам eval:
Неважно, как появился код: загружен сторонний скрипт, с помощью Function, с помощью eval — все равно он может быть потенциально опасным. А так называемое зло eval (потенциальный доступ к переменным, медленность работы) преувеличено, потому что всё зависит только от степени понимания программистом тонкостей языка. Если ты быдлокодер, то и без eval наделаешь уязвимостей.
Сказано, словно еще 123 малыша запроектировано.
Я думаю, правильнее: В проекте участвуют 123 малыша.
Получив сообщение через 2 секунды, подождите примерно еще 2 секунды, а затем закройте сообщение. Firefox 10, IE9, Opera 12 мгновенно показывают новое сообщение. Вебкитовские Chrome и Safari ожидают 2 секунды после закрытия, т.е. в них отсчёт интервала запускается только после того, как завершится текущая функция по интервалу. Это неважно в повседневном коде, но может оказаться важным при специализированно разработке (например, очереди ядра).
то получится ситуация, описанная вами.
Но смысл в том же: параметры функций также являются локальными переменными.
Выдержка из книги Д. Флэнагана «JavaScript. Подробное руководство» 5-е изд.:
«Параметры функций также считаются локальными переменными, определенными только в теле этой функции».