(function (){
"use strict";
var bgBlock = document.getElementById("background_bar");
if (bgBlock.scrollHeight > 80) { // bgBlock.scrollHeight всегда число
// Какой-то код, который выполняется для высоты меньше 80 px
} else {
// Другой код, если блок меньше
}
}());
(function ($){
"use strict";
}(this.jQuery));
(function (W, D){
// W = window (1 символ против 6)
// D = document (1 символ против 8)
"use strict";
}(window, document));
/* Глобальная переменная - лучший друг быдлокодера */
var map;
/* Создадим с помощью конструктора новый объект */
var brooklyn = new google.maps.LatLng(40.6743890, -73.9455);
/* Так обычно объявляют константы (до ECMA 2015 нормального синтаксиса не было) */
var MY_MAPTYPE_ID = 'Purple';
// Обычно такую телегу записывают так (шаблон One-var template, привет, Pascal!):
var map,
brooklyn = new google.maps.LatLng(40.6743890, -73.9455),
MY_MAPTYPE_ID = 'Purple';
/* Декларируем функцию */
function initialize() {
/* Создаём массив объектов */
var featureOpts = [
{ // Раз
stylers: [ //И сразу вложенный объект с полем-массивом объектов
{ hue: '#6b20a1' },
{ visibility: 'simplified' },
{ gamma: 0.5 },
{ weight: 0.5 }
]
}, { // Два
elementType: 'labels',
stylers: [ // Вложенный массив
{ visibility: 'on' }
]
}, { // Три
featureType: 'water',
stylers: [
{ color: '#6b20a1' }
]
}];
} // Закрывающую скобку кто ставить будет, я что ли?
(function(A) {
"use strict";
A.module('App').controller('Ctrl', ['$resource', '$scope', functino($resource, $scope) {
var r = $resource('/api/items/:id/', {
id: '@id'
}, {
update: {
method: 'PUT' //Необязательная фича для Django REST Framework
}
});
$scope.loading = true;
$scope.items = [];
r.query({
//А можно передать параметры, скажем, limit и offset
}, function(response) {
$scope.items = response;
$scope.loading = false;
}, function(response) {
$scope.loadign = false;
$scope.errors = response.data; // Так DRF отдаёт ошибки
});
}]);
}(this.angular));
<li ng-repeat="list in lists">
<a href="/">{{list.name}}</a>
</li>
<li ng-repeat="item in links">
<a ng-href="#/{{ item.link }}">{{ item.title }}</a>
</li>
links = [
{ link: 'contacts', title: 'Контакты' },
{ link: 'profile', title: 'Профиль' }
];
function makeCounter(){
//Эта переменная видна только здесь
var currentCount = 0;
//Эта функция - тоже только здесь, зато она видит currentCount
function getCountValue(){
currentCount += 1;
return currentCount;
}
//Возвращаем саму функцию, а не её значение
return getCountValue;
}
//counter = getCountValue
var counter = makeCounter();
counter(); //На самом деле - вызов getCountValue()
(function(A) {
"use strict";
A.module('Administrator',
[ 'ngCookies', 'ngRoute', 'ngResource', 'ui.layout', 'ui.bootstrap',
'ui.bootstrap.dropdown', 'ui.bootstrap.modal',
'ui.bootstrap.collapse', 'ui.grid', 'ui.grid.selection',
'ui.grid.resizeColumns', 'ui.grid.autoResize',
'ui.grid.selection', 'ui.grid.i18n', 'ui.layout',
'ui.grid.infiniteScroll'])
.config(function($interpolateProvider, $resourceProvider, $routeProvider) {
//Не хочу использовать Django-тег verbose
$interpolateProvider.startSymbol('{$');
$interpolateProvider.endSymbol('$}');
$resourceProvider.defaults.stripTrailingSlashes = false;//Иначе POST-запросы не работают, Django же
$routeProvider.when('/category/', {
templateUrl: '/administrator/template/grid/',
controller: 'CategoryGridController'
}).when('/tests/', {
templateUrl: '/administrator/template/grid/',
controller: 'TestsGridController'
});
})
.run(function($http, $cookies) {
$http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken;
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
$http.defaults.headers.common['X-CSRFToken'] = $cookies.csrftoken;
});
}(this.angular, this.jQuery));
(function(G) {
"use strict";
var $ = G.jQuery;
function csrfSafeMethod(method) {
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
function sameOrigin(url) {
var host = document.location.host, // host + port
protocol = document.location.protocol,
sr_origin = '//' + host,
origin = protocol + sr_origin;
// Allow absolute or scheme relative URLs to same origin
return (url == origin || url.slice(0, origin.length + 1) == origin
+ '/')
|| (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin
+ '/') ||
!(/^(\/\/|http:|https:).*/.test(url));
}
$.ajaxSetup({
beforeSend : function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && sameOrigin(settings.url)) {
xhr.setRequestHeader("X-CSRFToken", $.cookie('csrftoken'));
}
}
});
}(this));
@csrf_protect #Защищать так защищать
def email_check(request):
if request.method == "POST":
post_email = request.POST.get("email")
user_by_email = User.objects.get(email=post_email)
if user_by_email is not None: #Такой email уже использован
return HttpResponse(json.dumps({"success": False, "error": "Пользователь с таким email уже зарегистрирован"}), content_type="application/json")
else: #E-mail свободен
return HttpResponse(json.dumps({"success": True}), "application/json")
(function ($){
"use strict";
function myFunction(items){
return $(items).each(function(){
$(this).text("Hello, jQuery!");
});
}
$.fn.hellojQuery = myFunction;
}(jQuery));