Задать вопрос
  • Как на чистом JS отобрать HTML элементы по определенным признакам?

    IvanU7n
    @IvanU7n
    nothing interesting here
    0. причём здесь MSDN?
    1. DIV.box не существует в указанной разметке, но существует div#box
    2. для каждой радиокнопки (которая не обязательно должна быть именно радиокнопкой) делается свой вариант onclick="select('div#box', 'div.a')"
    3. select() пишется элементарно:
    function select(where, what) {
      for (const node of document.querySelectorAll(`${where} > :not(${what})`)) {
        node.setAttribute('aria-hidden', 'true');
        // то, что подразумевается под "скрывал"
      }
      for (const node of document.querySelectorAll(`${where} > ${what}`)) {
        node.removeAttribute('aria-hidden');
        // обратное тому, что подразумевается под "скрывал"
      }
    }

    4. если разметка такая, то всё теоретически можно сделать и на CSS без JS, но это уже другая история

    после переименования select() в selectOne() всё работает — написанные строкой через атрибуты обработчики ЕМНИП имеют сам элемент как ближайший resolving-scope — тело как бы обёрнуто в with (this) { ... }, а у <input> есть свой select():
    Ответ написан
    5 комментариев
  • Как на чистом JS отобрать HTML элементы по определенным признакам?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Примерно так можно:
    - при клике передавать имя класса, и всего один общий обработчик
    - перечислить все классы, чтобы выбранный включать, а остальные выключать
    Ответ написан
    Комментировать
  • Как спарсить текст, идущий после определенного HTML-кода?

    @Roman-Fov
    //*[text()='Title'][1]/following-sibling::*[1]

    Если интересно, то изучаем оси XPath
    Ответ написан
    6 комментариев
  • Content-Security-Policy: host-source VS 'self': в чем разница?

    @granty
    Мы заранее не знаем, с какого сайта может загружаться контент?
    Знаем, но не всегда. У сайта может быть множество поддоменов, в том числе и динамических.

    host-source VS 'self'
    Вместо 'self' браузер подставляет протокол, хост(домен) и номер порта от источника происхождения (текущего URL) страницы.
    Если у вас сайт доступен как: http://domain.com, https://domain.com, http://www.domain.com, https://www.domain.com, http://www.domain.com:8081 - 'self' всё это покроет:
    зайдёте на http://www.domain.com:8080/page.html - 'self' будет равен http://www.domain.com:8080, и тп.

    Иначе вместо 'self' вам придётся перечислять все варианты имён хостов(включая поддомены) со схемами/протоколами и номерами портов.

    почему ни host-source, ни 'self' в качестве источника не включают «подмножество» 'unsafe-inline', т.е. контент, встроенный в загружаемую страницу?
    Потому, что такой встроенный скрипт может появиться на странице без ведома вебмастера. Его может вставить вредоносный браузерный плагин, другой скрипт (например, виджет погоды), его может вставить интернет-провайдер. Такой инлайн-скрипт может появиться на странице в результате XSS-уязвимости.

    Content Security Policy от этого и защищает.
    Ответ написан
    3 комментария