var path = require('path');
var glob = require('glob');
var files = glob.sync('./app/src/views/**/*.js');
var dirs = getDirs(files);
var configs = [];
for (var dirname in dirs) {
var files = dirs[dirname];
configs.push({
entry: getEntries(files),
output: {
path: dirname.replace('app/src/views', 'build'),
filename: '[name].js'
}
});
}
module.exports = configs;
function getDirs(files) {
var dirs = {};
files.forEach(function (file) {
var dirname = path.dirname(file);
if (!dirs[dirname]) {
dirs[dirname] = [];
}
dirs[dirname].push(file);
});
return dirs;
}
function getEntries(files) {
var entries = {};
files.forEach(function (file) {
var name = path.basename(file, path.extname(file));
entries[name] = file;
});
return entries;
}
function fetchBlob(url, callbacks) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
if (callbacks) {
for (var key in callbacks) {
if (key.indexOf('on') === 0) {
xhr[key] = callbacks[key];
}
}
}
xhr.send();
}
fetchBlob('/path/to/image.jpg', {
onprogress: function (event) {
console.log(Math.round(event.loaded / event.total * 100) + '%');
},
onload: function () {
$('.container').html('<img src="' + URL.createObjectURL(this.response) + '">');
}
});
console.log('objC.pr.toString()= ' + Object.getOwnPropertyDescriptor(objC, 'pr').get.toString());
<script src="libs/plugins-scroll/plugins-scroll.js"></script>
event.preventDefault();
на onmousewheel, и это косвенно влияет на возможность масштабирования. function createChess(x, y) {
for (var i = 0; i < y; i++) {
var string = '', a, b;
if (i % 2) {
a = '#';
b = ' ';
} else {
a = ' ';
b = '#';
}
for (var j = 0; j < x; j++) {
if (j % 2) {
string += a;
} else {
string += b;
}
}
console.log(string);
}
}
function createChess(x, y) {
for (var i = 0; i < y; i++) console.log((i % 2 ? ' #' : '# ').repeat(Math.floor(x / 2) + 1).slice(0, x % 2 - 2));
}
$('textarea').on('keydown', function (event) {
if (event.which === 13 && event.ctrlKey) {
event.preventDefault();
// здесь код отправки
}
});
white-space: nowrap
и в момент рендера брать ширину этого элемента через offsetWidth и ставить её окну. var insertValues = function (string, values) {
var counter = 0;
return string.replace(/\[name(\$|\d+)\]/g, function (match, index) {
if (index === '$') {
return values[counter++];
}
return values[index - 1];
});
}
var string = 'text text [name$] [name$] text text [name8] text [name$] text text text text',
values = ['VALUE_1', 'VALUE_2', 'VALUE_3', 'VALUE_4', 'VALUE_5', 'VALUE_6', 'VALUE_7', 'VALUE_8', 'VALUE_9', 'VALUE_10'];
console.log(insertValues(string, values));
$('body').html(result);
это подразумевает полное пересоздание практически всех элементов на странице, а не просто замену текста внутри них. Это может вызвать ощутимые проблемы. $('.slider').on('slideChange', function (slideIndex) {
$('.video').each(function (videoIndex) {
var player = $(this).data('player');
if (slideIndex === videoIndex) {
player.playVideo();
} else {
player.pauseVideo();
}
});
});
document.addEventListener("click", function(event) {
if (!$(event.target).closest("#element").length) {
// ...
}
}, true);
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.msMatchesSelector;
}
Element.prototype.closest = function(selector) {
var target = this;
while (target && target != document) {
if (target.matches(selector)) {
return target;
}
target = target.parentNode;
}
return null;
};
document.addEventListener("click", function(event) {
if (!event.target.closest("#element")) {
// ...
}
}, true);