Ответы пользователя по тегу JavaScript
  • Каким образом лучше поступить?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    1) Создать API на который с разных сайтов будут отправляться запросы о клике.
    2) Генерировать сами всплывающие окна через .js, чтобы легко было интегрировать на сайты.
    3) В интегрируемом .js коде создать триггер на клик по окну и отправлять AJAX запрос на API.
    Ответ написан
    Комментировать
  • Как сделать клик по определенному классу среди одинаковых классов?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    $(this)
    Ответ написан
    Комментировать
  • Каким способом лучше запоминать значения фильтра?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Я использую cookies, чтобы URL не мешало. Но вы должны уведомить пользователя, что вы используете cookies
    Ответ написан
    Комментировать
  • Как очистить ввод телефона js?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Используйте jQuery Mask Plugin и не парьтесь.
    Ответ написан
    Комментировать
  • Как добавить в коде к кнопке hot key?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    if (e.keyCode == 13){
    // 13 код клавиши Enter
    // ... тут пишешь шо надо сделать
    }
    Ответ написан
  • Как производительно обновить текст тегов значениями переменных в цикле?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Объем данных велик в JSON файле?

    Как способы оптимизации могу предложить следующее:
    1) использовать пагинацию
    2) запускать скрипт сразу после объявления html тегов (костыль)
    Ответ написан
  • Как сделать точный расчёт прошедших дней, месяцев, лет?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Конкретно на вашем сайте это реализовано через JS. Вот скрипт:
    function Dialogv5d6e4ddf862d1() {var me = this;me.id = "dialogv5d6e4ddf862d1";me.GetElement = function () { return document.getElementById( me.id ); };me.GetEventHandlerName = function () { return "dialoghandlerv5d6e4ddf862d1"; };this.dialog_controls = [new DialogInput("date1", this, 0,new ElementAccessorDate(5)),new DialogInput("date2", this, 0,new ElementAccessorDate(5)),new DialogInput("calculate", this, 0,new ElementAccessorOperation()),new DialogInput("_progress_", this, 0,new ElementAccessorDefault()),new DialogInput("days", this, 0,new ElementAccessorOutput()),new DialogInput("YMD", this, 0,new ElementAccessorOutput())];me.dialog_controls._all ={};me.dialog_controls.forEach( function( e ) { if (me[e.id]===undefined) me[e.id] = e; me.dialog_controls._all[e.id] = e;} );this.addHandler = function ( handler ) {this.dialog_controls.forEach(function(c) { c.addHandler( handler);});};this.SetValues = function ( values ) {this.dialog_controls.forEach(function(c) {if ( values[c.id]!==undefined ) { c.SetValue( values[c.id] ); }});};this.Clear = function ( ) {this.dialog_controls.forEach(function( c) { c.ResetValue();});};this.SetDefaultValues = function () { this.Clear();};this.GetValues = function () {var ret = {}; this.dialog_controls.forEach(function( c) { ret[c.id] = c.GetValue();});return ret;};this.Validate = function ( ) {for(var i=0;i<me.dialog_controls.length;++i) if (!me.dialog_controls[i].Validate()) return false; return true;};this.layout = function ( ) {}};document.addEventListener("DOMContentLoaded", function(event) {var dlg = new Dialogv5d6e4ddf862d1();
    var hd = new CalculatorHandler(new function () {
    var me = this;
    me.id = 273;
    me.global = 1;
    var outputs = {};
    me.sinks={change:[],done:[]};
    me.startOnLoad = 1;
    me.infinite = 0;
    var inputs = {};
    var renderers = {};
    var recordsets = {};
    var diagrams = {};
    var handler, dialog, refreshTimer;
    var worker; var proxies; var stubs;
    var outer = this;
    var Planetcalc = new function() { 
    var inner = this; var cpcData = new CalcProgressData();var Calculate273_cpc = new CalcProgressControl(cpcData);inner.Calculate273 = function( ___inp___ ) {
    var progressControl = Calculate273_cpc;
    var Calculate273_result={};function  __impl__( __inp__ ) {
    
    var date1 = __inp__["date1"]===undefined?"2001-01-01 00:00:00":__inp__["date1"];
    var date2 = __inp__["date2"]===undefined?"":__inp__["date2"];
    var days = { "SetValue": function( v ) { Calculate273_result["days"]=v; } };
    var YMD = { "SetValue": function( v ) { Calculate273_result["YMD"]=v; } };var t1 = date1.getTime();
    var t2 = date2.getTime();
    var ms = ( t1>t2 )?t1-t2:t2-t1;
    days.SetValue( Math.round( ms/86400000) );
    
    var d1 = t1>t2?date1:date2;
    var d2 = t1>t2?date2:date1;
    var y = d1.getFullYear()-d2.getFullYear();
    var m = d1.getMonth()-d2.getMonth();
    var d = d1.getDate()-d2.getDate();
    
    if ( d<0 ) {
    	var dpm = d1.getMonth();
    	var dpy = d1.getFullYear();
    	while( d<0) {
    		var dpd = 31;
    		m-=1;
    		if ( dpm ) {
    			dpm -=1;
    		} else {
    			dpy-=1
    			dpm=11;
    		}
    		var dp = new Date( dpy,dpm,31);
    		if ( dpm!=dp.getMonth() ) {
    			dpd-=dp.getDate();
    		}
    		d+=dpd;
    	}
    } 
    
    if ( m<0 ) {
    	y-=1;
    	m = 12+m;
    }
    YMD.SetValue( y + ', ' + m + ', ' + d );
    };
     __impl__(___inp___); if ( progressControl.completed() ) { progressControl.context = null; } return Calculate273_result;};inner.main=inner.Calculate273;inner.progressControl = Calculate273_cpc; inner.init = function(){inner.progressControl.onDataReady();};};me.adapter = { encoder:{"date1":Date2String,"date2":Date2String},decoder:{"date1":String2Date,"date2":String2Date}};function startLoad() {
    me.progressControl.addEventListener("ready",handler.onReady);
    Planetcalc.init(); }
    me.timeout = 1500;
    me.auto = 1;
    me.init = function ( h, dlg ) { var o; handler=h;dialog =dlg;me.progressControl = Planetcalc.progressControl;var n; var fn;n='date1';if ( dlg[n] ) { inputs[n] = dlg[n]; }n='date2';if ( dlg[n] ) { inputs[n] = dlg[n]; }o = dlg.days; outputs[o.id] =o; o.formatter =new FormatterNumber( 0,0,0,"R" );o = dlg.YMD; outputs[o.id] =o; o.formatter =new FormatterSame( );startLoad();};
    me.stop = function() {
    	if (worker) worker.postMessage({type:"stop"}); 
    	else Planetcalc.progressControl.stop();
    };
    me.start = function() {
    	handler.onStart();
    	if (worker) {
    		me.changeDisplayOptions();
    		worker.postMessage({type:"start",inputs:proxies(dialog.GetValues())});
    	} else {
    		Planetcalc.progressControl.clear();
    		me.result = null;
    		me.refresh();
    	}
    };me.getInputs = function() {
    	return inputs;
    };
    function objectValues( a, o ) {
    	for(var n in o) {
    		a.push( o[n] );
    	}
    }
    me.getOutputs = function() {
    	var ret = [];
    	objectValues( ret, outputs );
    	objectValues( ret, diagrams );
    	objectValues( ret, renderers );
    	return ret;
    };me.refresh = function ( ) {me.doit();};
    me.setResult = function( res, done ) {outputs.days.SetValue(res.days);outputs.YMD.SetValue(res.YMD);if (done) { handler.onStop();if ( PCF.requestFormulaUpdate( false ) ) { var mjx = window.MathJax; mjx.Hub.Queue(["Typeset",mjx.Hub]);};}}
    me.doit = function ( ) {var error =false; try {me.changeDisplayOptions();
    var res = Planetcalc.Calculate273({"date1":inputs.date1.GetValue(), "date2":inputs.date2.GetValue()});if ( res ) { if ( me.result ) { for( var n in res ) me.result[n] = res[n]; } else me.result = res; }if ( me.result ) me.setResult( me.result, true );} catch( e ) {
    	handler.onStop(e);
    }};me.changeDisplayOptions = function () {me.calculateDisplay(new DisplayWrapperInput(inputs.date1), new DisplayWrapperInput(inputs.date2), new DisplayWrapper(outputs.days), new DisplayWrapper(outputs.YMD));dialog.layout();
    }
    me.calculateDisplay = function ( date1, date2, days, YMD )
     {
    };
    },{calculate:"Рассчитать", stop:"Остановить"});;
    hd.initdialog(dlg);dlg.addHandler(hd);window.dialoghandlerv5d6e4ddf862d1 = hd;});
    <code>
    
    тут используются динамические функции судя по названию функции, или какой-нибудь встроенный модуль со сборщиком от пи... злоумышленников)
    Ответ написан
  • Как сделать слайдер неактивным на определенных размерах?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Для этого и существуют options.
    1) Отследите событие изменения ширины окна
    2) В отслеженном событии переинициализируйте ваш слайдер
    3) В опшнс передайте false на все onTouchDrag, onMouseDrag итд. и готово
    Ответ написан
  • Как сверстать подобный таймлайн с заполнением при скроле?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Попробуйте использовать скрипты по работе с элементом canvas.
    $(window).scroll(function(){
     allHeight = body.height()//высота бадика
     curHeight = $(this).top()//насколько прокручено
    // тут работа с канвас библиотекой и чики пики
    })
    Ответ написан
    1 комментарий
  • Как скачать музыку с браузера с сайта vk?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    А что неудобного в установке расширений? savefrom.net у них там расширение есть. Один раз скачал, установил и все. Прям в ВК возле каждого трека дополнительная кнопка "скачать" появляется.
    Ответ написан
  • Плавное появление и плавное скрытие блока при скроллинге, как сделать?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Попробуйте использовать эту библиотечку) Она прикольная и очень простая, ксли я вас правильно понял, вашу задумку лего можно реализовать через нее.
    Ответ написан
  • Как сделать отставание прокрутки фона?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Свойство background-position и событие window.onscroll(). Почитайте, поиграйтесь.
    Пример того, что вы ищете:
    вот тут
    Ответ написан
    4 комментария
  • Как сделать так, чтобы задний фон затемнялся, когда посредине экрана весит форма?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Создать отдельный div под фон формы.
    <div class="form-bg"><!-- Этот блок надо растянуть на всю ширину и высоту экрана -->
      <div class="form-close"></div> <!-- Этот блок надо растянуть на всю ширину и высоту родителя. Потом при клике  
                                                      закрывать окно с формой. Якобы закрытие при нажатии на пустое простраство -->
      <div class="form"></div> <!-- Тут внутренности формы -->
    </div>
    Ответ написан
  • Возможно ли добавить опцию бронирования на статичный сайт?

    JaxAdam
    @JaxAdam
    Junior Full-Stack Developer
    Можно подключить Node Js и хранить данные в каком-нибудь json файле в закодированном виде, это бэк, но если как вы указали в тэгах вы знаете хотябы начало JS, то это не сложно. Необходимо будет только узнать как выгружать/загружать данные в json файл, и написать функции шифрования/дешифрования(в интернете существует более 10000 ассиметрических функции шифрования, ключ дешифровки главное сохранить надежно, а лучше всего подгружать из внешнего файла).
    Ответ написан
    Комментировать