@Ysery

Написал js, но, думаю, тут можно его сократить (оптимизировать)?

Доброго времени суток.

Вот такой написал код. Т.к. в JS я не силён и действовал методом тыка, то наверняка код можно оптимизировать.

if (window.location.hash) {
        var urlHash = window.location.hash;
		var urlraw = encodeURIComponent(window.location.href);
		var urlc = urlraw.split("%23")[0];
        if(urlHash.indexOf('#comment-') === 0 && readCookie('commentadd') === urlc ) {
            alert("Комментарий оставлен");
        }
    }


Логика скрипта простая - если отображена страница с "якорем" на коммент ( пример xxx.xx/page.html#comment-12 ) и ещё имеется кука (имя - commentadd; значение - ссылка на страницу (без якоря, поэтому и идёт "обрезка" в коде, далее идёт сравнение)), то выводится сообщение "Комментарий оставлен". А то из-за кеширующего плагина часто отображается страница без добавленного в очередь на модерацию комментария и посетители повторно отправляют свои комментарии.

Я вот думаю, может вообще без отсечения? Просто сравнивать начало, не заморачиваясь над отсечением. Для примера:
https%3A%2F%2Fxxx.xx%2F123.html - ссылка в куки
https%3A%2F%2Fxxx.xx%2F123.html%23comment-12 - ссылка, определяемая через JS (до отсечения)
Вот только не нашёл примера, как сравнивать начальную строку, у которой окончание может быть различным.
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
Raxen
@Raxen
TechLead Frontend Developer, Beeline
Способ определения оставленного комментария на ваше усмотрение, сократить можно так

const { hash, href } = window.location;
const urlc = href.replace(hash, '');

if (hash && decodeURIComponent(readCookie('commentadd')) === urlc) {
  alert("Комментарий оставлен");
}

или так

const { hash, href } = window.location;

if (hash && href.includes(decodeURIComponent(readCookie('commentadd')))) {
  alert("Комментарий оставлен");
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы