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

    vladgba
    @vladgba
    (。◕‿‿◕。)
    for(i in msg) console.log("'" + i + "': '" + msg[i] + "';")
    Ответ написан
    1 комментарий
  • Как изменить чужую HTML страницу через консоль, чтобы изменения сохранялись?

    vladgba
    @vladgba
    (。◕‿‿◕。)
    Ну, как вариант(точнее костыль) можно создать iframe на весь экран, убрать границы и следить за фреймом. При загрузке новой страницы добавлять свой скрипт/код и менять адрес на панели(если нужно).

    Но он будет постоянно применять изменения заново, а не сохранять.

    Как то так:
    var ifrm = document.createElement("iframe"); // Создаём фрейм
    ifrm.setAttribute("src", window.location.href);
    
    ifrm.style.width = "100vw"; //Растягиваем на весь экран
    ifrm.style.height = "100vh";
    ifrm.setAttribute('frameborder', 0); // Убираем "бордюр"
    
    document.body.innerHTML = "";
    document.body.appendChild(ifrm);
    
    ifrm.onload = function() { // Следим за перезагрузкой страницы
    
        // Меняем заголовок и историю (если нужно)
        var ttl = ifrm.contentDocument.querySelector('head title').innerText;
        document.title = ttl;
        var pth = ifrm.contentWindow.location.href;
        window.history.replaceState({}, ttl, pth);
    
        // Первый вариант (Подгружать скрипт по ссылке)
        var script1 = document.createElement("script");
        script1.src = "https://evil.corp/code.js";
        script1.type = "text/javascript";
        ifrm.contentWindow.document.getElementsByTagName("body")[0].appendChild(script1);
    
        // Второй вариант (Вставка тега с кодом)
        var script2 = document.createElement('script');
        var inlineCode = document.createTextNode("alert('вместо алерта код')");
        script2.appendChild(inlineCode);
        ifrm.contentWindow.document.getElementsByTagName("body")[0].appendChild(script2);
    };
    Ответ написан
    Комментировать
  • Как пофиксить ошибку undefined при обращении к переменной в HTML?

    vladgba
    @vladgba
    (。◕‿‿◕。)
    Поправлю вас:
    Строка 30, если вместо ['persons_'+i+1] написать ['persons_'+(i+1)], то ошибку не выдаёт, (ну или там 1 лишняя)
    Ответ написан
    Комментировать
  • Не работает переключатель, как исправить?

    vladgba
    @vladgba
    (。◕‿‿◕。)
    В вашем случае, как мне кажется, стоит переделать вот так
    <div class="container-activatedOptions">
        <form class="form-activatedOptions">
            <button id="optionsToggle">Открыть настройки</button>
        </form>
        <div id="options">
            Тут опции...
        </div>
    </div>


    disabledOptions(); // Изначальное состояние
    
    function activatedOptions(){
        options.style.display = 'block';
        optionsToggle.innerHTML = 'Закрыть настройки';
        optionsToggle.onclick = disabledOptions;
        return false;
    }
    
    function disabledOptions(){
        options.style.display = 'none';
        optionsToggle.innerHTML = 'Открыть настройки';
        optionsToggle.onclick = activatedOptions;
        return false;
    }
    Ответ написан
    Комментировать
  • Как получить оставшиеся 2 вложенных элемента?

    vladgba
    @vladgba
    (。◕‿‿◕。)
    Простая рекурсия, минимум кода:
    const box = {
        name: 'space',
        type: 'hold',
        color: 'red',
        container: {
            minibox: 'plate',
            minibox2: 'dish',
            container2: {
                thing: 'jacket',
                thing2: 'socks'
            }
        }
    };
    
    function walkinobj(box) {
        for (let key in box) {
            if (typeof(box[key]) === 'object') {
                walkinobj(box[key]);
            } else {
                console.log(`Свойство ${key} имеет значение ${box[key]}`);
            }
        }
    }
    
    walkinobj(box);
    Ответ написан
    Комментировать