innerHTML не изменяет данные

97
28 сентября 2019, 02:00

Всем привет, есть вот такая диллема, и я не могу понять что здесь происходит:

-- Место действия: отладочная панель Yii2

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

<div class="yii-debug-toolbar__block">
    <a id="tt1" href="<?= $panel->getUrl() ?>"> 123</a>
    <a id="tt2" href="<?= $panel->getUrl() ?>"> 222</a>
</div>

И есть js код, расположен сразу после блока, прямо в этом же файле

<script>
    window.onresize = displayWindowSize;
    window.onload = displayWindowSize;
    function displayWindowSize() {
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
        // сначала пытался в этот элемент просто добавить innerHTML, не получилось
        // в логах нашел editable, на всякий пожарный поставил в true(не знаю
        // насколько это тут реально нужно и уместно)
        var tt2 =  document.getElementById("tt1");
        tt2.contentEditable=true;
        tt2.innerHTML ="'w:"+ myWidth+"'";
        console.log(tt2);
    };
</script>

Еще немного вводных данных:

  1. Сама панель выглядит вот так:
  2. Она загружается после после того, как загружается DOM
  3. Замена судья по логам работает:

Но, вот при всём этом результат такой же, как и на шаге 1.

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

Финальное решение: благодарю @grinat за ваш вариант. В конечтном итоге, в файле toorbar.js после родного yii2 кода вставился мой кусочек:

 window.onload = displayWindowSize; // тут сработал сразу и без воопросов
    window.addEventListener('resize', displayWindowSize); // тут window.onresize ... не работал, нашёл работающий вариант
    function displayWindowSize() {
        var  myWidth = window.innerWidth;
        var  myHeight = window.innerHeight;
        var tt1 =  document.getElementById("tt1");
        var tt2 =  document.getElementById("tt2");
        tt1.innerHTML ="w:"+ myWidth;
        tt2.innerHTML ="h:"+ myHeight;
        console.log('123123');
    };
Answer 1

contentEditable не нужен, он превращает блок в редактор разметки. Скорее всего, ты не учел что эта панелька динамически подгружается через ajax запрос: https://github.com/yiisoft/yii2-debug/blob/master/src/assets/js/toolbar.js#L50 поэтому где и что ты сумел изменить большая загадка

READ ALSO
Как можно реализовать закрытия сайта по кнопке

Как можно реализовать закрытия сайта по кнопке

Пробовал использовать метод windowclose(); но он работает не во всех браузерах и в консоли появляется строка: Scripts may close only the windows that were opened by it

118
Сортировка по двум колонкам в таблице

Сортировка по двум колонкам в таблице

Подскажите как можно реализовать такую сортировкуНет ни каких идей

116
Как запустить функцию 1 раз

Как запустить функцию 1 раз

Есть функция прослушки DOM на изменение

123