Radrigo

Рейтинг
86
Регистрация
01.12.2012
jkm #:

Как на самом деле работает mod_rewrite.

Строка с которой работает RewriteRule содержит только index.php, а do=addnews&id=238 попадает в %{QUERY_STRING}.

Спасибо большое. Работает)
Пытаюсь таким методом, но что-то не работает

RewriteRule ^index.php?do=addnews&tpl=obyavleniya&id=([0-9]+)$ index.php?do=addnews&id=$1 [L]

Получилось реализовать переход с последней ссылки при помощи shift+tab, чтобы подменю не закрывалось, таким образом.

$(document).ready(function () {
        $('.menu-drop__sp > a').focus(
                function () {
                        $(this).parents('.menu-drop__sp').addClass('focus-menu');
                }
        );
        /////////
        document.addEventListener('keydown', function (e) {
                let isTabPressed = (e.key == 'Tab' || e.keyCode == 9);
                if (e.shiftKey && isTabPressed) {
                        $('.menu-drop__sp ul li:last-child a').blur(
                                function () {
                                        $(this).parents('.menu-drop__sp').addClass('focus-menu');
                                }
                        );
                } else {
                        $('.menu-drop__sp ul li:last-child a').blur(
                                function () {
                                        $(this).parents('.menu-drop__sp').removeClass('focus-menu');
                                }
                        );
                }
        });
        //////////
        $('.menu-drop__sp > a').hover(
                function () {
                        $('.menu-drop__sp').removeClass('focus-menu');
                }
        );
        $(document).click(
                function (e) {
                        if (!$('.menu-drop__sp ul a').is(e.target)) {
                                $('.menu-drop__sp').removeClass('focus-menu');
                        };
                }
        );
});

Не могу понять, почему не работает такой вариант. Мне ведь по сути не надо добавлять класс, только удалить, если на последней ссылке в подменю нажимается только tab без shift

$(document).ready(function () {
        $('.menu-drop__sp > a').focus(
                function () {
                        $(this).parents('.menu-drop__sp').addClass('focus-menu');
                }
        );
        /////////
        document.addEventListener('keydown', function (e) {
                let isTabPressed = (e.key == 'Tab' || e.keyCode == 9);
                if (!e.shiftKey && isTabPressed) {
                        $('.menu-drop__sp ul li:last-child a').blur(
                                function () {
                                        $(this).parents('.menu-drop__sp').removeClass('focus-menu');
                                }
                        );
                }
        });
        //////////
        $('.menu-drop__sp > a').hover(
                function () {
                        $('.menu-drop__sp').removeClass('focus-menu');
                }
        );
        $(document).click(
                function (e) {
                        if (!$('.menu-drop__sp ul a').is(e.target)) {
                                $('.menu-drop__sp').removeClass('focus-menu');
                        };
                }
        );
});
webinfo #:

А при чём тут атрибут "rel"?

Ошибся. Конечно же атрибут href. Спасибо всем за подсказку. Действительно, лучше сделать при помощи php, что и попытаюсь реализовать

Всё работает как надо. Спасибо большое. Очень помогли)

Данный вариант работает не так, как надо. При изменении размера класс постоянно добавляется и убирается независимо от того, есть скроллинг или нет. Пример в видео.


Может я что-то не так сделал?

                window.addEventListener("resize", function () {
                        let mainHeight = document.documentElement.clientHeight;
                        let scrolHeight = Math.max(
                                document.body.scrollHeight, document.documentElement.scrollHeight,
                                document.body.offsetHeight, document.documentElement.offsetHeight,
                                document.body.clientHeight, document.documentElement.clientHeight
                        );
                        if (scrolHeight > mainHeight) {
                                document.body.classList.toggle('scroll');
                        }
                });
webinfo #:

Вот с этим сложнее, могу только сделать, чтобы при любом клике оно пропадало

Чтобы за пределами - простого ничего в голову не приходит.

Спасибо большое за подсказку с :last-child. Забыл про неё.

По-поводу клика вне блока подменю нашёл такой вариант. Вроде всё работает. Собственно весь код

$(document).ready(function () {
        $('.nav-top a').focus(
                function () {
                        $(this).parents('.nav-top__sp').addClass('focus-menu');
                }
        );
        $('.nav-top__sp ul li:last-child a:last-child').focusout(
                function () {
                        $(this).parents('.nav-top__sp').removeClass('focus-menu');
                }
        );
        $(document).click(
                function (e) {
                        if (!$('.nav-top__sp ul').is(e.target)) {
                                $('.nav-top__sp').removeClass('focus-menu');
                        };
                });
});

Буду признателен подсказке, если считаете, что что-то не так или лучше сделать по-другому

webinfo #:

Это я так с ходу не скажу. Как-то логику скрипта менять, чтобы при переходе на пункт подменю класс с родительского пункта не убирался. Там на самом деле разные варианты могут быть.

Спасибо за подсказку. Сделал. Класс убирается только при переходе фокуса с последней ссылки в подменю. Добавил последней ссылке класс.
Может подскажете, как сделать, чтобы скрипт сам определял последнюю ссылку в подменю? Чтобы не прописывать класс.
Еще хотелось бы добавить, чтобы при клике за пределами подменю оно пропадало
Сейчас реализовано вот так
$(document).ready(function () {
        $('.nav-top a').focus(
                function () {
                        $(this).parents('.nav-top__sp').addClass('focus-menu');
                }
        );
        $('.nav-top a.focus-end').focusout(
                function () {
                        $(this).parents('.nav-top__sp').removeClass('focus-menu');
                }
        );
});
webinfo #:
Как там Милторг? 🤔

Без понятия😀

webinfo #:

Как там Милторг? 🤔

У вас подменю скрытое, если нет того самого класса. Как только уходит фокус с основного пункта, класс убирается и подменю скрывается, поэтому на нём код не срабатывает. Надо сделать так, чтобы подменю не скрывалось.

Как же тогда можно сделать? Изначально ведь подменю должно быть скрыто

webinfo #:

Я проверял, всё работает.

Как работает, можно посмотреть на этом сайте. Переключение кнопок видно в версии для слабовидящих. Ссылка с включением тестового шаблона.
https://guspoliteh.ru/index.php?action_skin_change=yes&skin_name=test

После того, как меню раскрывается, фокус переходит на ссылку в подменю, после чего закрывается.

Буду очень признателен, если подскажите, что не так сделал.
Всего: 67