• Дождаться загрузки изображения?

    Negwereth
    @Negwereth
    lvivcss.com.ua
    Я б так как-то делал.
    function loadImageAsync(url) {
      return new Promise((resolve, reject) => {
        const img = new Image();
        img.src = url;
        img.onload = resolve;
      });
    }
    
    Promise.all([
      loadImageAsync("img.jpg"),
      loadImageAsync("img.png")
    ])
      .then(images => {
        //do magic
      });
    Ответ написан
    Комментировать
  • Как получать данные от API и показывать их в Web?

    Stalker_RED
    @Stalker_RED
    cron - чтобы запускать раз в минуту
    curl - чтобы получить статистику.
    json_decode - преобразовать json в массив.

    В простейшем случае
    $json = file_get_contents('https://mcapi.ca/query/play.minesuperior.com/info');
    $data = json_decode($json);
    $online = $data[0]['players']['online'];
    
    echo $online;
    // или запись в файл
    file_put_contents('/path/to/my/file.txt', $online);
    Ответ написан
  • Конвертер валют как написать условие?

    Stalker_RED
    @Stalker_RED
    Не делать никаких optionSelectRub()
    Написать функцию которая принимает на вход две валюты и число.

    var currency1 = {name: 'RUB', rate: 100500}
    var currency2 = {name: 'USD'}
    convert(currency1, currency2, 100)

    При переключении валют (событие change) менять эти ваши currency1 и 2.

    Сами курсы валют лучше где-то из сети брать а не хардкодить. Вы же не собираетесь его вручную переписывать каждый день?
    Ответ написан
    1 комментарий
  • Онлайн-консультант для общения с посетителями чье соглашение необходимо?

    @other_letter
    Больше бумаги - чище задница (с)
    Давайте ссылку и туда и туда.
    Ибо претензии в случае чего будут всё равно к Вам.
    Ответ написан
  • Почему в chrome не работает cursor на событие?

    @AlexanderZe
    Интересующийся
    Просто будьте внимательнее в своем коде body.style.cursor, а у вас там curos какой-то.
    Ответ написан
    3 комментария
  • Как загрузить изображение в VK с помощью JavaScript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Из браузера напрямую в ВК не получится. Из nodejs или Electron'а – запросто.

    Ключевой момент здесь – ответ сервера ВК на загрузку к ним файла картинки. Они отвечают без CORS-заголовков и браузер считает такой ответ небезопасным, делая его недоступным JS-скриптам.

    Загрузка файлов в ВК хорошо описана в их документации. Три шага:
    1. получить адрес сервера, принимающего картинку
    2. отправить туда картинку методом POST и получить ответ
    3. используя «ответ» сохранить фото в нужный альбом или на стену.

    Всё это легко делается и на JavaScript, вот только политика безопасности браузеров не позволяет получать ответ с чужого сервера, если тот не сопровождается специальными HTTP-заголовками. А ВК их не даёт из каких-то своих соображений «безопасности», как мне ответила их тех.поддержка:
    3e0bb81eb1264aa5995460f8930a3834.png

    Поэтому можно реализовать загрузку только через свой сервер.
    Ответ написан
    2 комментария
  • Какой JQ плагин?

    @Eugeny1987
    Работаю с HostCMS
    вероятно Isotope
    Ответ написан
    Комментировать
  • Как вам моя вёрстка?

    compibox
    @compibox
    Full-Stack Developers
    Верстали бы уже адаптивно)
    Ответ написан
    Комментировать
  • Как передать данные в компонент VueJS 2?

    landen13
    @landen13
    frontend-developer
    Данные в компонент передаются только посредством props. Судя по коду, Вы неплохо так запутались :)

    Посмотрите внимательно примеры в документации, там все очень хорошо написано и показано.

    Если кратко:
    Данные передаются через props. Принимаемые props изначально должны быть прописаны в компоненте.
    Весь компонент должен быть описан в импортируемом .vue файле.
    Далее он регистрируется глобально через Vue.component('my-header', myheader); (либо локально - способы регистрации компонента есть в документации).
    Также должна быть обертка вокруг Ваших my-header и my-footer, например #my-app
    Создается рутовый инстанс Vue с el: '#my-app', в котором лежат компоненты.
    VueJS находит компоненты внутри #my-app и инициализирует их.
    И в самом темплейте, где Вы прописали эти самые компоненты, им нужно передать данные.
    Например, если у вас было в компоненте:
    props: ['data']
    то передавать их нужно как обычный биндинг атрибутов:
    <my-footer v-bind:data="posts"></my-footer>
    Ответ написан
    Комментировать
  • Как из json(объект) создать форму?

    sabramovskikh
    @sabramovskikh
    Смотреть есть ли несколько ответов, если да, то делать это радиобатонами. Если ответ один, то делает инпут. Сделать each в each.
    Лучше конечно написать класс, в котором будут методы renderRadio, renderCheckbox, RenderInput, RenderForm. В него передаем json и парсим его, инкрементируя одну переменную $html например. и в конце передает содержиое $html в нужный див, таблицу или чего там у вас
    Ответ написан
    Комментировать
  • Почему не работают элементы на карте?

    kynisa
    @kynisa
    I just press buttons.
    Потому что вы взяли чужие исходники.
    Чтобы у вас работало так как вы хотите нужно писать свои.
    Ответ написан
    Комментировать
  • Как сделать ajax подгрузку, сначала при нажатии а потом скролле?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Вот Билл Эрриксон скомпилированный под вашу задачу.
    php
    /**
         * Javascript for Load More
         *
         */
        function be_load_more_js() {
    
            if ( !is_singular( 'post' ) )
                return;
            $query = array(
                'post__not_in'   => array( get_queried_object_id() ),
                'category_name'  => ea_first_term( 'category', 'slug' ),
                'posts_per_page' => 3
            );
            $args = array(
                'url'   => admin_url( 'admin-ajax.php' ),
                'query' => $query,
            );
            wp_enqueue_script( 'be-load-more', get_stylesheet_directory_uri() . '/js/load-more.js', array( 'jquery' ), '1.0', true );
            wp_localize_script( 'be-load-more', 'beloadmore', $args );
    
        }
    
        add_action( 'wp_enqueue_scripts', 'be_load_more_js' );
    
        /**
         * AJAX Load More
         *
         */
        function be_ajax_load_more() {
            $args = isset( $_POST[ 'query' ] ) ? array_map( 'esc_attr', $_POST[ 'query' ] ) : array();
            $args[ 'post_type' ] = isset( $args[ 'post_type' ] ) ? esc_attr( $args[ 'post_type' ] ) : 'post';
            $args[ 'paged' ] = esc_attr( $_POST[ 'page' ] );
            $args[ 'post_status' ] = 'publish';
            ob_start();
            $loop = new WP_Query( $args );
            if ( $loop->have_posts() ): while ( $loop->have_posts() ): $loop->the_post();
                be_post_summary();
            endwhile; endif;
            wp_reset_postdata();
            $data = ob_get_clean();
            wp_send_json_success( $data );
            wp_die();
        }
    
        add_action( 'wp_ajax_be_ajax_load_more', 'be_ajax_load_more' );
        add_action( 'wp_ajax_nopriv_be_ajax_load_more', 'be_ajax_load_more' );
    
        /**
         * First Term
         * Helper Function
         */
        function ea_first_term($taxonomy, $field) {
            $terms = get_the_terms( get_the_ID(), $taxonomy );
    
            if ( empty( $terms ) || is_wp_error( $terms ) )
                return false;
    
            // If there's only one term, use that
            if ( 1 == count( $terms ) ) {
                $term = array_shift( $terms );
            } else {
                $term = array_shift( $list );
            }
    
            // Output
            if ( $field && isset( $term->$field ) )
                return $term->$field;
    
            else
                return $term;
    
        }

    js
    jQuery(function ($) {
    
            $('.post-listing').append('<span class="load-more">Click here to load earlier stories</span>');
            var button = $('.post-listing .load-more');
            var page = 2;
            var loading = false;
            var scroll = false;
            var scrollHandling = {
                allow: true,
                reallow: function () {
                    scrollHandling.allow = true;
                },
                delay: 400 //(milliseconds) adjust to the highest acceptable value
            };
    
            function morer() {
                if (!loading) {
                    loading = true;
                    var data = {
                        action: 'be_ajax_load_more',
                        page: page,
                        query: beloadmore.query,
                    };
                    $.post(beloadmore.url, data, function (res) {
                        if (res.success) {
                            $('.post-listing').append(res.data);
                            $('.post-listing').append(button);
                            page = page + 1;
                            loading = false;
                        } else {
                            // console.log(res);
                        }
                    }).fail(function (xhr, textStatus, e) {
                        // console.log(xhr.responseText);
                    });
                }
            }
    
    
            $('body').on('click', '.load-more', function () {
                if (scroll === false) {
                    morer();
                   $('.load-more').remove();
                    scroll = true;
                }
            });
    
            $(window).scroll(function () {
                if (scroll === true) {
                    if (!loading && scrollHandling.allow) {
                        scrollHandling.allow = false;
                        setTimeout(scrollHandling.reallow, scrollHandling.delay);
                        var offset = $(button).offset().top - $(window).scrollTop();
                        if (2000 > offset) {
                            morer();
                        }
                    }
                }
            });
    
        });
    Ответ написан
    1 комментарий
  • Как организовать товары в небольшом интернет магазине?

    georgypoplavsky
    @georgypoplavsky
    Если всё настолько плохо, то введите просто свою "систему учёта" для начала в Excel
    Название / Свой артикул / Категория / Модификация (цвет, размер) / Количество / Цена / Ссылка на сайте

    Пользуясь такой таблицей Вы скоро поймёте какой инструмент необходим Вашему "магазину".

    Чтобы не погружаться в непробиваемые сети 1С, советую сначала попробовать что-то более интуитивное, например Мой склад, там кстати бесплатный аккаунт даже есть.
    Ответ написан
    Комментировать