Задать вопрос
  • Какие есть способы подключения svg спрайта в background?

    @Nevea
    в svg файле должен быть указан
    <view id="icon-figure" viewBox="0 0 30 30" />
    вот пример вставок
    https://dbushell.com/demos/svg/2015-01-29/svg-spri...
    Обратите внимание на сам внешний файл sprite.svg
    Ответ написан
    Комментировать
  • Как исправить ошибку (Uncaught TypeError: e.indexOf is not a function) в консоле?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    indexOf предполагает строку или массив. Видимо e не является ни тем, не другим, а, например null или undefined.
    Возможно стоит искать тут:

    Если url не передан, или передан неверно - будет такая ошибка
    // https://code.jquery.com/jquery-3.5.0.js
    /**
     * Load a url into a page
     */
    jQuery.fn.load = function( url, params, callback ) {
    	var selector, type, response,
    		self = this,
    		off = url.indexOf( " " );
    
    	if ( off > -1 ) {
    		selector = stripAndCollapse( url.slice( off ) );
    		url = url.slice( 0, off );
    	}
    
    	// If it's a function
    	if ( isFunction( params ) ) {
    
    		// We assume that it's the callback
    		callback = params;
    		params = undefined;
    
    	// Otherwise, build a param string
    	} else if ( params && typeof params === "object" ) {
    		type = "POST";
    	}
    
    	// If we have elements to modify, make the request
    	if ( self.length > 0 ) {
    		jQuery.ajax( {
    			url: url,
    
    			// If "type" variable is undefined, then "GET" method will be used.
    			// Make value of this field explicit since
    			// user can override it through ajaxSetup method
    			type: type || "GET",
    			dataType: "html",
    			data: params
    		} ).done( function( responseText ) {
    
    			// Save response for use in complete callback
    			response = arguments;
    
    			self.html( selector ?
    
    				// If a selector was specified, locate the right elements in a dummy div
    				// Exclude scripts to avoid IE 'Permission Denied' errors
    				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
    
    				// Otherwise use the full result
    				responseText );
    
    		// If the request succeeds, this function gets "data", "status", "jqXHR"
    		// but they are ignored because response was set above.
    		// If it fails, this function gets "jqXHR", "status", "error"
    		} ).always( callback && function( jqXHR, status ) {
    			self.each( function() {
    				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
    			} );
    		} );
    	}
    
    	return this;
    };

    Ответ написан
    Комментировать
  • Возникает ошибка: "multiple statements found while compiling a single statement" при вводе кода. Python. Что не так?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Вы кое-что перепутали. У вас так "a + b = c", а нужно наоборот "c = a + b", и так во всех условиях.
    Ответ написан
    3 комментария
  • Возникает ошибка: "multiple statements found while compiling a single statement" при вводе кода. Python. Что не так?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Судя по дизайну, вы просто взяли все эти 28 строк и засунули в стандартное окно ввода IDLE? Так не будет работать, если скормить все строки сразу. Создайте нормально .py файл, скопируйте весь код в него. И файл уже запускайте.
    Ну и от стандартным idle лучше не пользоваться, та еще фигня
    Ответ написан
    3 комментария
  • Как сделать правильную маску Masked Input для ввода email?

    @asand
    Для маски "имя@gmail.com" используйте что-то вроде:
    $("input#email").inputmask({
                mask: "*{1,20}[.*{1,20}][.*{1,20}][.*{1,20}]@*{1,20}[.*{2,6}][.*{1,2}]",
                greedy: false,
                clearMaskOnLostFocus: false,
                onBeforeWrite: function (event, buffer, caretPos, opts) {
                    buffer.forEach(function(item, i, buffer) {
                        if (item == '@') {
                            buffer[i+1] = 'g';
                            buffer[i+2] = 'm';
                            buffer[i+3] = 'a';
                            buffer[i+4] = 'i';
                            buffer[i+5] = 'l';
                            buffer[i+6] = '.';
                            buffer[i+7] = 'c';
                            buffer[i+8] = 'o';
                            buffer[i+9] = 'm';
                            buffer.length = i+10;
                        }
                    });
                }
            });
    Ответ написан
    Комментировать
  • В чем разница между prop и attr?

    abyrkov
    @abyrkov
    JavaScripter
    Разница такая же, как между свойством HTMLElement и атрибутом тэга, которого он представляет.
    Проще говоря, prop читает свойство объекта, представляющего тэг, а attr именно атрибут тэга. Разницы, для стандартных свойств особой нет(value для input, например, есть и там, и там). А вот для нестандартных, prop не будет работать
    Ответ написан
    Комментировать
  • В чем разница между prop и attr?

    lazalu68
    @lazalu68
    Salmon
    Из документации:

    (attr) Get the value of an attribute for the first element in the set of matched elements or set one or more attributes for every matched element.

    (prop) Get the value of a property for the first element in the set of matched elements or set one or more properties for every matched element.

    В адаптации Google Translate:

    "(attr) Получите значение атрибута для первого элемента в наборе согласованных элементов или установите один или несколько атрибутов для каждого согласованного элемента."

    "(prop) Получите значение свойства для первого элемента в наборе согласованных элементов или установите одно или несколько свойств для каждого согласованного элемента."

    Собственно вот и вся разница: первый метод читает/устанавливает значение атрибута элемента (Мержевич по теме), а второй - свойство объекта представляющего элемент. Если вкратце, то разница в том, что они из разной среды: атрибут это термин HTML - вы устанавливаете его в разметке и значение атрибута как-то обрабатывается, влияя на какие-то свойства элемента. А свойства это значения относящиеся непосредственно к DOM объекту элемента.

    Например, class, один из самых привычных атрибутов для тега, в элементе представлен свойством className. Если у тега нет атрибута class, то у самого элемента есть свойство className, которое содержит пустую строку. Ну и соотвественно задать класс элементу можно либо изменив атрибут class с помощью attr, либо изменив свойство className с помощью prop.
    Ответ написан
    Комментировать
  • Как отследить полноэкранный режим карты?

    0xD34F
    @0xD34F Куратор тега Яндекс.Карты
    А здесь смотрели? - события fullscreenenter, fullscreenexit.

    UPD. Вынесено из комментариев:

    что-то не получается с ними работать

    Обработчики надо привязывать не к самой карте, а к элементу управления, отвечающему за переключение фулскрин режима:

    const fs = map.controls.get('fullscreenControl');
    fs.events.add('fullscreenenter', () => console.log('ON'));
    fs.events.add('fullscreenexit', () => console.log('OFF'));
    Ответ написан
    2 комментария
  • Как обновить локальную ветку задачи если develop ветка обновилась?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вы наверное не совсем понимаете логику работы гита, раз такой вопрос возник.
    Репозиторий надо рассматривать как дерево состояний проекта. Каждый коммит это определённое состояние. Название ветки это лишь указатель на некоторое состояние.

    создал локальную ветку задачи branchTaskName от локальной develop-ветки (предварительно ее обновив)

    Точнее вы создали тематическую ветку не от другой ветки, а от конкретного состояния, на которое указывал в тот момент указатель develop в распакованной (checkout) в рабочий каталог ветке.

    Нужно ли мне обновлять свою ветку задачи branchTaskName свежими изменениями?

    Моё мнение — нужно. Ведь ваша задача состоит не в создании сферических файлов в вакууме, а в изменении файлов проекта. Причём изменений относительно уже устаревшего состояния. Желательно чтобы ваша работа опиралась на актуальный проект, а не на старую версию.

    Как правильно обновить ветку задачи branchTaskName чтобы не было проблем при отправке своей ветки в удаленный репозиторий?

    Тут тоже странное утверждение. У вас неоткуда взяться проблемам при отправке (push) изменений во внешний репозиторий. Проблемы могут возникнуть уже после, когда вашу ветку будут интегрировать (merge) с основной веткой (develop). Чтобы избежать этих проблем мы заранее предпринимаем определённые действия.

    Способов собственно два:

    1) Мы забираем новое состояние develop в свою тематическую ветку через коммит слияния. И для этого вовсе не обязательно переключаться в локальную develop, обновлять её (pull) а затем возвращаться к себе чтобы сделать git merge develop. Это бессмысленные манипуляции. Достаточно просто скачать к себе в локальный репозиторий обновления внешнего репозитория git fetch (Лайвхак: эту операцию можно автоматизировать. Настройте автоматическое выполнение fetch по расписанию, и у вас всегда будет под рукой доступ к актуальному проекту). Затем сделайте git merge origin/develop. Указатель origin/develop это и есть ссылка на состояние проекта на момент последнего скачивания (fetch). В принципе эти два шага эквивалентны одной команде git pull origin develop — внутри делается всё то же самое.

    2) Второй способ — пересадить вашу ветку на новое актуальное состояние проекта (rebase). Выглядеть будет так, если бы вы начали работать над фичей вот только что, и тут точно не возникнет конфликтов, так как база ветки актуальная. Это делается тоже в два шага. Сначала убедимся что у нас всё актуально git fetch, затем собственно пересадим ветку на актуальное состояние git rebase develop. Последний вариант мне нравится тем, что история не засоряется коммитами слияния. Но тут предполагается, что тематическая ветка принадлежит только вам и никто больше в ней не работает. Так как после пересадки её придётся удалять из внешнего репозитория и создавать там заново через git push --force. Если работа над фичей ведётся совместно с коллегами, то такой рабочий процесс не очень подойдёт.

    Если вы не коммитите напрямую в master и в develop, то держать их у себя локально (делать checkout в рабочий каталог) тоже нет смысла. Вы всегда можете начать новую тематическую ветку от актуального состояния, на которое ссылаются origin/master или origin/develop. Так вы не наступите на грабли, когда люди забывают переключиться из мастера и начинают коммитить туда. Нет мастера — нет проблем.
    Ответ написан
    Комментировать
  • Как создать функцию копирования объектов с подставным именем нового объекта?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Вы пытаетесь создать новый объект и дать ему имя, передав это имя в функцию. Это не работает, потому что в JavaScript имена переменных должны быть определены явно, они не могут быть созданы или изменены динамически во время выполнения.

    Возвращаем копию объекта, затем присваиваем эту копию новой переменной:
    let user = {
       name: "David",
       age: 25,
    }
    
    function objectClone(object) {
       let newObject = {};
    
       for (let key in object) {
          newObject[key] = object[key];
       }
    
       return newObject;
    }
    
    let user2 = objectClone(user);
    
    console.log(user2.name); // выводит "David"
    Ответ написан
    2 комментария
  • Как убрать элемент с яндекс.карт?

    Rema1ns
    @Rema1ns
    и так сойдет
    Если вы имеете ввиду что удалить placemark, То вам необходимо элементы заносить в свою коллекцию
    создать свою коллекцию - myCollection = new ymaps.GeoObjectCollection();
    создать плейсмарк - placemark[id] = new ymaps.Placemark
    добавить плейсмарк в коллекцию - myCollection.add(placemark[id]);
    удалить все myCollection.removeAll(); или удалить какой то конкретный
    Ответ написан
    6 комментариев
  • Как убрать элемент с яндекс.карт?

    @trefferr
    В инициализации конструктора карт, присваиваешь свойству пустой массив.
    controls: []
    ymaps.ready(function(){
            moscow_map = new ymaps.Map("banner_map", {
                center: [56.34820425, 41.30735193],
                controls: [],
                zoom: 17
            });
    Ответ написан
    Комментировать
  • Как заблокировать доступ к моему сайту с определенного сайта через htaccess?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Попробуйте
    RewriteCond "%{HTTP_REFERER}" "badsite.ru" [NC]
    RewriteRule ".*" "–" [F]
    Ответ написан
    Комментировать
  • Как ассинхронно сменить картинку у маркера на яндекс картах?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Ответ — пресеты. Создаёте, сохраняете (как видно, объекты практически аналогичны и их нужно просто клонировать, меняя один параметр). А дальше — что захотите. Пресетов может быть сколько угодно с любыми именами.

    Update: По молчаливой просьбе собеседника добавил сторонние элементы

    var points = [
    		[55.831903,37.411961],
    		[55.763338,37.565466],
    		[55.763338,37.565466],
    		[55.744522,37.616378],
    		[55.780898,37.642889]
    	],
    	markers = {};
    
    ymaps.ready(function () {
    	ymaps.option.presetStorage.add('custom#default', {
    		iconLayout: 'default#image',
    		iconImageHref: 'marker.png',
    		iconImageSize: [30, 40],
    		iconImageOffset: [-15, -40],
    		iconImageClipRect: [
    			[0, 30],
    			[30, 70]
    		],
    		hideIconOnBalloonOpen: false
    	});
    	ymaps.option.presetStorage.add('custom#active', {
    		iconLayout: 'default#image',
    		iconImageHref: 'marker.png',
    		iconImageSize: [30, 40],
    		iconImageOffset: [-15, -40],
    		iconImageClipRect: [
    			[0, 70],
    			[30, 110]
    		],
    		hideIconOnBalloonOpen: false
    	});
    
    	var myMap = new ymaps.Map('map', {
    			center: [55.751574, 37.573856],
    			zoom: 9
    		});
    
    	for (var i = 1; i <= points.length; i++) {
    		markers['id' + i] = new ymaps.Placemark(
    			points[i - 1],
    			{
    				hintContent: 'Какая красивая метка...'
    			},
    			{
    				preset: 'custom#default'
    			}
    		);
    		$('<a href="#" data-type="marker" data-id="id' + i + '">').html(i + '-я метка').appendTo($(document.body));
    	}
    
    	placemark.events.add('click', function (e) {
    		changeMarker(e.get('target'));
    	});
    
    	myMap.geoObjects.add(placemark);
    });
    
    function changeMarker (marker) {
    	marker.options.set('preset', {
    		preset: 'custom#active'
    	});
    }
    
    $(document).on('click', 'a[data-id][data-type="marker"]', function (e) {
    	e.stopPropagation();
    	e.preventDefault();
    	changeMarker(markers[$(this).data('id')]);
    });


    Метка тут такая 8542c38cbe6a410f901a3adffe1974b2.png
    Ответ написан
    4 комментария
  • Как получить максимальный и минимальный ключ массива в php?

    toxa82
    @toxa82
    Делаем сначала ksort(). Потом получаем первый элемент reset(), и получаем последний end()
    Ответ написан
  • Как исправить проблему - обновление данных корзины сбрасывает цену товара на минимальную?

    это нормальное поведение. При каждом заходе на страницу корзины, выполняется обновление цен на товар. При это цена на товар берется минимальная из доступных.

    Доступность типа цены для групп пользователей настраивается на странице цены в админке.

    Чтобы изменить это поведение, надо поменять PRODUCT_PROVIDER_CLASS на свой. Можно вот так
    Ответ написан
    1 комментарий
  • Почему Gulp не создает файлы и не видит изменений?

    slowdream
    @slowdream Автор вопроса
    Проблема решилась. Путь необходимо указывать без слеша в начале :)
    Ответ написан
    2 комментария
  • Перенос компиляции Pug в Gulp на уровень вверх, относительно конечной папки - возможно?

    BBoyJuss
    @BBoyJuss
    WordPress, интерфейсы и все вытекающие
    Вот такой рецепт получился (если я правильно понял вопрос)
    const path   = require('path');
    const gulp   = require('gulp');
    const pug    = require('gulp-pug');
    
    const cities = [
        {
            cityName : 'city1',
        },
        {
            cityName : 'city2',
        }
    ];
    
    gulp.task('views', function(done) {
    
        cities.forEach(function(city, index, cities) {
    
            gulp.src('template/city.pug')
                .pipe(pug({
                    data : city
                }))
                .pipe(gulp.dest(path.join('..', '..', 'domains', city.cityName)));
        });
    
        done();
    });
    Ответ написан
    2 комментария
  • Error: File not found with singular glob при запуске таска JS в Gulp?

    @quaden
    Изучаю js, верстку
    Столкнулся с такой проблемой и решил убрав слэш в начале пути к файлам
    Ответ написан
    Комментировать
  • Как настроить окружение в phpstorm, чтобы писать CSS с новыми возможностями ( & и @nested, CSS Сustom Properties), вложенностью селекторов?

    @orlovec Автор вопроса
    начинающий
    Нашел ответ:
    Просто вспомнил что следует заглянуть в коллекцию плагинов к phpstorm.
    Надо установить
    И настроить phpstorm: The IDE now recognises .pcss files. You can also enable PostCSS support for your .css files in Preferences | Languages & Frameworks | Stylesheets | Dialects.

    5eccbce3c592a759882418.png

    В итоге было/стало:
    5eccbd0dbff10735450507.png
    5eccbd561fef2427931247.png
    Ответ написан
    Комментировать