Pull to refresh
6
0
Send message
Я залогинился через «Google Account», перешёл в «Settings» (https://workmateapp.com/users/edit). Хочу поменять информацию в форме, а она не сохраняется, просит пароль (который я не заводил).

Должен ли я завести пароль от «Google Account»? :)
Если метод, переданный параметром к head.ready будет исполнен только после наступления dom ready, то вы конечно правы (двойная проверка будет излишней).

Возможно я ошибаюсь, но если «jquery.js» загрузится до события «DOM ready» возможна ошибка.
Думаю, всё же $(function(){}); стоит оставить.
Вот здесь тесты: http://headjs.com/#theory

Исходя из своего опыта скажу, что асинхронная подгрузка скриптов действительно визуально ускоряет загрузку страницы, но:

Эффект действительно заметен только на старых браузерах и ie. В современных браузерах, при тестировании я нередко получал обратный эффект (правда очень мизерный).

Если у вас на странице контент, оформление которого зависит от скрипта (чего конечно в идеале нельзя допускать), например слайдер или меню, то при загрузке страница может на мгновение предстать в недооформленном виде.

$(function(){ }); и всякие подобные «документ реди», вызванные инлайн скриптом на загружаемой странице, перестают работать. Так как скрипты подгружаются асинхронно со страницей, то страница может загрузиться до полной загрузки всех скриптов и некоторые функции и переменные могут быть ещё не определены, что взовет ошибку. Надо вызов кода помещать в дополнительную колбек функцию. Например, в случае head.js:


$(function(){ 
    head.ready(
        function() { 
            /*code*/ 
    }) 
});  


Возможно автор тонкий тролль. Все же выскажу свое мнение:

Несмотря на var-ы, эта куча переменных в начале создается в глобальной области видимости. Таким образом все переменные и функции являются глобальными. Допустим автор написал другой подобный скрипт и там тоже есть переменная step. Вот тут то и собака зарыта.

Можно использовать структуру (Object Literal):

var myScroller = {
options: {
scrollerstep: 1,
...
lefttime: 0
},
runScroll: function() {
...
},
scroll_run: function() {
...
}
};
// Вызов
$(function(){
...
myScroller .scroll_run();
});


Или использовать Self Invoking Anonymouse Function:

var myScroller = (function(){
this.options = {
scrollerstep: 1,
...
lefttime: 0
};
this.runScroll = function() {
...
};
this.scroll_run = function() {
...
};
return this;
})();

// Вызов
$(function(){
...
myScroller .scroll_run();
});

Q: «Так называемые парадоксы автора, шокирующие читателя, находятся часто не в книге автора, а в голове читателя»
A: «Большинство из четырех лидеров»

Q: «Прозреть, что ты смертен — это значит познать начало ужаса; познать же неизбежность смерти — это значит положить конец ужасу»
A: «Вы увидите, — насилие — насилие, опасное для жизни Solaris.»

Q: «Тёмную сторону в тебе ощущаю я?»
A: «Как вы думаете, есть темная сторона?»
В качестве плейсхолдера можно использовать label для input -а вместо value. А если уж без jQuery плагина никуда, то вот пример:

(function($){
$.fn.extend({
labelPlaceHolder: function() {
return this.each(function() {
var $input = $(this), $label = $('label[for='+ $input.attr('id') +']');
if($input.val()) $label.hide();
$input.focus(function(){
$label.hide();
}).blur(function(){
if(!$input.val()) $label.show();
});
});
}
});
})(jQuery);


Пример использования:

$(function(){
$('#searchForm input:text, #loginForm .name input, #loginForm .pass input').labelPlaceHolder();
});


Осталось только в CSS position-absolute -ом label поместить поверх input
Существует множество скрипт лоадеров: LAB.js, head.js, yepnope.js. Последнтй позволяет подгружать скрипты при определенном условии:
yepnope({
test : Modernizr.geolocation,
yep : 'normal.js',
nope : ['polyfill.js', 'wrapper.js']
});

Недавно он даже стал частью Modernizer.js
Думаю в некоторых ситуациях логично требовать реальный адрес эл. почты для верификации регистрирующегося пользователя (как мера проти фейк юзеров).

А вообще, надо действовать исходя из ситуации. Например, в одном проекте мы специально не сделали вход по email, чтобы пользователь вводя при каждом входе свой никнейм запомнил его, потому что на никнейм было много чего привязано…
Мне нравится (и для меня он удобней чем вконтакте)
Для всего этого есть Fireworks
Существует Fireworks!
Есть еще такой вариант:

(function(__global){
    if (!__global.console || (__global.console && !__global.console.log)) {
         __global.console = {
	     log: (__global.opera && __global.opera.postError)
             ? __global.opera.postError
	     : function(){ }
        }
    }
})(this);


Спасибо, классно все объяснили (как раз скоро пригодится :)
О, они изобрели свой лунапарк лунаскрипт с блекджеком и шлюхами.
Вы правы (я недавно на хабре). Добавлю ссылку на оригинал. И впредь буду читать правила.
Может я не удачный пример привел. Если использовать JQuery, то данный пример действительно лучше оформить в виде плагина.

В данном случае фреймворк ни при чем.

Существует много разных подходов и все они имеют право на жизнь (главное избегать спагетти-кода).
Похож на Kohana 3 (в частности файловой структурой).

Information

Rating
Does not participate
Registered
Activity